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

LeetCode:求两数归零操作次数(Java代码超时排查)

问题分析与优化方案

超时原因

  1. 逐次减法效率极低:当两个数差距极大时(比如num1=10^9,num2=1),你的代码需要执行10^9次循环,这完全超出了LeetCode的时间限制。
  2. 循环条件错误:num1>=0 && num2>=0会导致死循环——当其中一个数变为0后,另一个数减0不会改变数值,循环会无限执行下去,最终触发超时。

优化代码

用除法代替多次减法,一次性计算可连续操作的次数,同时修正循环条件:

class Solution {
    public int countOperations(int num1, int num2) {
        int count = 0;
        while (num1 != 0 && num2 != 0) {
            if (num1 >= num2) {
                count += num1 / num2;
                num1 %= num2;
            } else {
                count += num2 / num1;
                num2 %= num1;
            }
        }
        return count;
    }
}

优化说明

  • 除法批量统计次数:比如num1=100,num2=3,num1/num2=33,直接把33加到count里,代替33次逐次减法的循环,大幅减少循环次数。
  • 取余简化后续操作:num1%num2得到减法后的剩余值,相当于完成所有连续减法后的结果。
  • 修正循环条件:当任意一个数为0时立即停止循环,避免无效操作和死循环。

内容的提问来源于stack exchange,提问作者Sheharyar Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 23:05:26