先奉上提交记录
解答过程,都写在了纸上,一目了然
代码:
class Solution
{
public:
int arrangeCoins(int n)
{
double res = 8 * ((double)n) + 1;
double x = (sqrt(res) - 1) / 2.0;
long int result = (long int)x;
return result;
}
};
【注】这里一开始有一个类型转换,原因是题目给定的n的范围是32位有符号整型,而n是int类型,最大127,当n非常大的时候比如n=2147483647,再乘上8,将这个乘数放到int类型中会导致溢出,所以要先将n转换成double类型,long int也可以,最后再用将double转换成long int类型去掉小数部分即为结果!