Leetcode 441. Arranging Coins (Easy) (cpp)
Tag: Binary Search, Math
Difficulty: Easy
/*
441. Arranging Coins (Easy)
You have a total of n coins that you want to form in a staircase shape, where every k-th row must have exactly k coins.
Given n, find the total number of full staircase rows that can be formed.
n is a non-negative integer and fits within the range of a 32-bit signed integer.
Example 1:
n = 5
The coins can form the following rows:
¤
¤ ¤
¤ ¤
Because the 3rd row is incomplete, we return 2.
Example 2:
n = 8
The coins can form the following rows:
¤
¤ ¤
¤ ¤ ¤
¤ ¤
Because the 4th row is incomplete, we return 3.
*/
class Solution {
public:
int arrangeCoins(int n) {
if (n == 0) {
return 0;
}
int l = 1, r = n;
while (l < r) {
long mid = l + (r - l + 1) / 2;
if (mid * (mid + 1) / 2.0 <= n) {
l = mid;
}
else if (mid * (mid + 1) / 2 > n) {
r = mid - 1;
}
}
return r;
}
};