Easy
222499FavoriteShare
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.
C++:
/*
* @Autor: SourDumplings
* @Date: 2019-09-25 19:41:29
* @Link: https://github.com/SourDumplings/
* @Email: changzheng300@foxmail.com
* @Description: https://leetcode.com/problems/arranging-coins/
*
* 假设n刚好能容纳x行
* 则(1 + x) * x / 2 = n => x^2 + x - 2n = 0
* x = (-1 + sqrt(1 + 8n)) / 2,取整即可
*/
class Solution
{
public:
int arrangeCoins(int n)
{
return (int)((-1 + sqrt(1 + 8 * (double)n)) / 2);
}
};
Java:
/*
* @Autor: SourDumplings
* @Date: 2019-09-25 19:48:29
* @Link: https://github.com/SourDumplings/
* @Email: changzheng300@foxmail.com
* @Description: https://leetcode.com/problems/arranging-coins/
*/
class Solution
{
public int arrangeCoins(int n)
{
return (int) ((-1 + Math.sqrt(1 + 8 * (double) n)) / 2);
}
}