题目:
你总共有 n 枚硬币,并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。
给你一个数字 n ,计算并返回可形成 完整阶梯行 的总行数。
解答:
方法一:暴力解法
class Solution:
def arrangeCoins(self, n: int) -> int:
i=1
while n>=0:
n-=i
if n<0:
return i-1
else:
i+=1
方法二:二分法
class Solution:
def arrangeCoins(self, n: int) -> int:
left,right=1,n
while left<=right:
mid=left+(right-left)//2
total=mid*(mid+1)//2
if total==n:
return mid
elif total>n:
right=mid-1
else:
left=mid+1
return right