【题目】
【代码】
执行用时:40 ms, 在所有 Python3 提交中击败了82.23% 的用户
内存消耗:14.8 MB, 在所有 Python3 提交中击败了93.27% 的用户
通过测试用例:1335 / 1335
class Solution:
def arrangeCoins(self, n: int) -> int:
def cal(n):
return (1+n)*n//2
line1=1
linen=n
while line1<=linen:
mid=line1+(linen-line1)//2
if cal(mid)==n:
return mid
elif cal(mid)<n:
line1=mid+1
elif cal(mid)>n:
linen=mid-1
return line1-1
class Solution:
def arrangeCoins(self, n: int) -> int:
def cal(n):
return (1+n)*n//2
line1=1
linen=n
while line1<=linen:
mid=line1+(linen-line1)//2
if cal(mid)==n:
return mid
elif cal(mid)<n:
line1=mid+1
elif cal(mid)>n:
linen=mid-1
return linen

这篇博客介绍了一个Python实现的解决方案,用于解决安排硬币问题。代码利用二分查找算法在O(log n)的时间复杂度内找到可以完美排列的硬币最大数量,并在所有提交中击败了一定比例的用户。核心算法是计算累积和并进行区间更新来确定合适值。
444

被折叠的 条评论
为什么被折叠?



