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

LeetCode #27 Remove Element:两种解法的性能差异疑问

关于LeetCode 27题Remove Element两种解法性能差异的解释

你的两段代码逻辑完全等价,操作次数没有任何区别,导致跑分分位差异的原因并非代码本身的效率,而是LeetCode评测系统的随机性,具体细节如下:

  • 评测环境的随机波动:LeetCode的跑分基于单次运行结果,服务器当前负载、CPU调度、内存临时占用等外部因素都会影响耗时和内存统计。即使是完全相同的代码,多次提交也可能得到不同的分位结果,你遇到的波动属于正常现象。
  • Python解释器的微小优化差异:虽然两段代码逻辑等价,但变量计算形式略有不同(比如第一段用len(nums)-k,第二段直接用k),不过这种差异在Python解释器中带来的性能影响微乎其微,不足以导致如此明显的分位变化,核心还是随机性主导。
  • 内存统计的误差:两段代码都是在原数组上进行原地修改,没有额外开辟内存空间,理论上内存占用完全一致。跑分显示的内存分位差异同样是评测系统的随机误差导致的。

验证方法

你可以多次提交同一版本的代码,会发现跑分的分位会在一定范围内波动,甚至两次提交完全相同的代码,分位也可能不同。这说明LeetCode的跑分只能作为大致参考,不能精准反映代码的真实性能。

代码等价性验证

我们可以通过变量替换证明两段代码的操作完全一致:

  • 第一段代码中,k是已匹配的目标元素个数,最终返回len(nums)-k(有效元素个数)
  • 第二段代码中,k初始为len(nums),每匹配一个元素就减1,最终k就是有效元素个数
  • 两段代码中,数组赋值的下标是等价的:第一段的len(nums)-k等于第二段的k(因为第二段的k = len(nums) - 第一段的k),所以赋值操作完全相同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 16:01:14