leetcode力扣刷题打卡
题目:441. 排列硬币
描述:你总共有 n 枚硬币,并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。
给你一个数字 n ,计算并返回可形成 完整阶梯行 的总行数。
解题思路
1、典型二分法;
2、等差数列和(首项 + 末项)* 项数 / 2;
原代码##
class Solution {
public:
int arrangeCoins(int n) {
long long l = 1, r = n;
while (l != r) {
long long mid = (l + r + 1) / 2;
long long temp = (1 + mid) * mid / 2;
if (temp > n) r = mid - 1;
else l = mid;
}
return l;
}
};