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

为什么LeetCode322中<=numeric_limits<int>::max()比<运算更快?

差异原因分析

你观察到的12ms运行时间差异主要来自两个可能的原因:

1. 编译器优化差异

在这道题的输入约束下,i的取值范围是0到题目给定的amount(LeetCode平台本题amount上限为104),`coins`数组中的面额都是正整数,最大值不会超过104。因此i + coin的最大值远小于numeric_limits<int>::max()(32位int下为2^31-1≈2e9),所以第一个判断条件逻辑上是恒成立的。
当使用<=判断时,编译器更容易识别到该条件的冗余性,可以直接在编译阶段优化掉这个多余的分支判断,减少每次循环的指令执行量。而<判断的语义对应的推导逻辑更复杂,部分编译器版本可能没有做对应的优化,导致每次循环都会多执行一次无意义的比较操作,累计下来就产生了12ms的耗时差距。

2. 判题环境波动

LeetCode的判题机本身存在±10ms左右的运行时间统计误差,你可以多次提交两份代码验证差异是否稳定存在。如果多次提交后差异消失或者波动很大,说明这12ms的差距大部分来自平台的统计误差。

另外你可以直接删掉第一个溢出判断条件,因为本题输入下不可能触发溢出,删除后代码运行速度会更快。

内容的提问来源于stack exchange,提问作者Shipley Xie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:06:00