【lc】441. 排列硬币

链接

https://leetcode.cn/problems/arranging-coins/description/

问题分析

这题看数据规模,遍历肯定搞不定。

看数据规律,我们优先考虑二分。

然后单拎出来一个函数用来计算求和即可。

其中,二分如果不好判断边界,就假定极限情况(来到了left == right的情况),看看最后你要的值是left还是right,直接返回即可。

代码

复制代码
class Solution:
    def arrangeCoins(self, n: int) -> int:
        if n < 2:
            return n
        left, right = 1, n
        while left <= right:
            mid = (left + right) >> 1
            if self.cal(mid) < n:
                left = mid + 1
            elif self.cal(mid) == n:
                return mid
            else:
                right = mid - 1
        return right

    def cal(self, n):
        return (1 + n) * n // 2
复制代码

 

posted @   BJFU-VTH  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示