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.
法1:直接对于每一行有一个暂时的硬币数和剩下的硬币数,当剩下的硬币数不足以继续填满这一行的暂时硬币数就结束
class Solution { public: int arrangeCoins(int n) { int cur =1, rem=n-1; while (rem>=cur+1) { cur++; rem-=cur; } return n==0? 0:cur; } };
(这段代码不是自己写的,我觉得写得真好。思路十分清晰)