力扣链接:441.排列硬币
难度:⭐
解题关键词:二分查找
解题思路:因为按照等差求和公式,前 k 个完整阶梯所需的硬币数量为 total = (k * (k + 1)) / 2。所以我们去找 k,找到最后一个比 2*total 数小的那个元素。
typescript
function arrangeCoins(n: number): number {
let left = 1;
let right = n;
let result = 0;
while (left <= right) {
const mid = Math.floor((right - left) / 2) + left;
if (mid * (mid + 1) <= 2 * n) {
result = mid;
left = mid + 1;
} else {
right = mid - 1;
}
}
return result;
}