你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币。
给定一个数字 n,找出可形成完整阶梯行的总行数。
n 是一个非负整数,并且在32位有符号整型的范围内。
解方程 X^2+X-2n = 0,注意 n 右移可能溢出。
class Solution {
public:
int arrangeCoins(int n) {
return (int)(-1 + sqrt(1 + (long)n << 3)) >> 1;
}
};