You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python程序出现Time limit exceeded错误:调用perfect_square(0)超时

问题分析与修复方案

问题根源

调用perfect_square(0)时触发无限循环导致超时:
函数初始s=1,循环条件s != n(即1 != 0)永远成立,每次循环s都会递增,永远无法等于0,也不会触发返回True的分支,最终导致超时。

修复后的代码

完美平方数判断函数

def perfect_square(n):
    # 0是完美平方数,直接返回True
    if n == 0:
        return True
    # 负数不可能是完美平方数
    if n < 0:
        return False
    s = 1
    # 当s的平方超过n时,无需继续循环
    while s * s <= n:
        if s * s == n:
            return True
        s += 1
    return False

完美立方数判断函数

def perfect_cube(n):
    # 0是完美立方数,直接返回True
    if n == 0:
        return True
    # 处理负数情况,立方数可以是负数
    abs_n = abs(n)
    s = 1
    # 当s的立方超过n的绝对值时,无需继续循环
    while s * s * s <= abs_n:
        if s * s * s == abs_n:
            return True
        s += 1
    return False

关键修复点

  1. 提前处理特殊值:直接判断n=0的情况,避免进入无效循环。
  2. 优化循环终止条件:当s的平方/立方超过目标数时立即终止循环,避免不必要的计算和无限循环。
  3. 补充边界判断:完美平方函数增加负数判断(平方数非负),完美立方函数兼容负数场景(负数可以是立方数)。

内容的提问来源于stack exchange,提问作者Nerea Valdivieso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 17:20:43