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

LeetCode与IDE输出不一致:有序数组去重问题排查

问题原因及LeetCode Python编码细节

代码失效的核心原因

你的代码在LeetCode平台上无效,本质是没有原地修改传入的原列表:
在Python中,列表作为函数参数是按引用传递的,但你在代码中执行了nums = nums[:i+1] + temp,这行代码会创建一个全新的列表对象,并将函数内的局部变量nums指向这个新对象。此时,函数内的nums和外部传入的原列表已经没有任何关联——原列表的内容完全没被改动,而LeetCode平台只会检查传入的原列表的前k个元素,自然看不到变化。

你本地测试时觉得结果正确,大概率是直接查看了函数内新创建的nums对象(比如在函数内打印这个新列表),而非检查外部传入的原列表。如果按照LeetCode的逻辑本地测试:传入原列表,调用函数后打印原列表,你会发现它和输入完全一致,和平台表现一样。

LeetCode编写Python代码的关键细节

  • 严格遵守原地修改要求:多数数组、链表类题目要求原地修改输入对象,禁止重新赋值参数变量。必须通过原地操作修改原对象内容,比如使用索引赋值(nums[k] = nums[i])、pop()、del等方法。
  • 明确返回值的作用:比如这道题返回的k,是告诉平台取原列表的前k个元素作为结果,你不需要返回修改后的数组,只需要保证原列表前k个元素符合要求即可。
  • 理解可变对象的引用传递:对于列表、字典这类可变对象,函数内可以直接修改对象的内容(会影响外部原对象),但如果给参数变量重新赋值(比如nums = []),会切断和原对象的引用,原对象不会受到任何影响。
  • 模拟平台逻辑测试:本地测试时,要模拟LeetCode的验证逻辑:定义原列表,调用函数后,检查原列表的前k个元素是否正确,而不是查看函数内创建的新对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 15:55:09