你总共有 n 枚硬币,并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。

    给你一个数字 n ,计算并返回可形成 完整阶梯行 的总行数。

    示例 1:
    image.png
    输入:n = 5
    输出:2
    解释:因为第三行不完整,所以返回 2 。
    示例 2:
    image.png
    输入:n = 8
    输出:3
    解释:因为第四行不完整,所以返回 3 。

    1. /**
    2. * @param {number} n
    3. * @return {number}
    4. */
    5. var arrangeCoins = function (n) {
    6. let l = 1, r = n;
    7. while (l < r) {
    8. // +1取右值
    9. const mid = Math.floor((l + r + 1) / 2);
    10. // 求和公式 首项+未项 * 项数 / 2
    11. if (mid * (mid + 1) <= 2 * n) {
    12. l = mid;
    13. } else {
    14. r = mid - 1;
    15. }
    16. }
    17. return l
    18. };

    image.png