Description
You have n
coins and you want to build a staircase with these coins. The staircase consists of k
rows where the ith
row has exactly i
coins. The last row of the staircase may be incomplete.
Given the integer n
, return the number of complete rows of the staircase you will build.
Example 1:
Input: n = 5 Output: 2 Explanation: Because the 3rd row is incomplete, we return 2.
Example 2:
Input: n = 8 Output: 3 Explanation: Because the 4th row is incomplete, we return 3.
Constraints:
1 <= n <= 231 - 1
Code
Time Complexity: , Space Complexity:
和 Valid Perfect Square 一樣。
class Solution {
public:
int arrangeCoins(int n) {
// 1 + 2 + ... + x = x * (x + 1) / 2
long long l = 1, r = n;
while(l < r) {
long long m = l + (r - l) / 2;
if((m * (m + 1) / 2) < n) {
l = m + 1;
} else {
r = m;
}
}
return (l * (l + 1) / 2) > n ? l - 1 : l;
}
};