你总共有 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;
}
};
本文探讨了如何使用数学公式解决硬币阶梯问题,即给定一定数量的硬币,求可以形成完整阶梯行的最大行数。通过解方程X^2+X-2n=0,我们提供了一个高效的解决方案。
你总共有 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;
}
};
1111
316

被折叠的 条评论
为什么被折叠?