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.
方法一:1215ms
class Solution(object):
def arrangeCoins(self, n):
"""
:type n: int
:rtype: int
"""
if n == 0:
return 0
k = 1
while n > 0:
if n - k > 0:
n -= k
k += 1
elif n == k:
return k
else:
return k-1
方法二:65ms
欣赏这个解法,学会这个思路
'''
Find x that satisfy the condition: 1+2+3+4+5+6+7+...+x ≤ n
Summing the AP for first x terms, S = x(x+1)/2 ≤ n
Solving quadratic, discarding -ve soln, x = (sqrt(8n+1) - 1)/2
'''
class Solution(object):
def arrangeCoins(self, n):
return int(((8*n + 1)**0.5 - 1)/2)