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

LeetCode 26题:移除有序数组重复元素代码本地正确但平台不通过求助

LeetCode 26题「Remove Duplicates from Sorted Array」提交失败原因及解决方法

你的代码本地运行正确但LeetCode提交不通过,核心问题是没有遵守题目要求的「原地修改」规则。

问题出在哪?

在Python中,nums = new_nums这行代码只是把函数内部的局部变量nums指向了你新建的new_nums列表,但LeetCode的判题系统会检查最初传入的原数组的内存内容,而不是你重新赋值后的局部变量。你的代码没有对原数组做任何实际修改,所以判题器会认为你没完成任务。

正确的原地修改解法(双指针法)

因为数组是非递减排序的,我们可以用双指针在原数组上直接操作,不需要额外创建新数组:

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        if not nums:
            return 0
        # 慢指针指向当前唯一元素的最后位置
        slow = 0
        for fast in range(1, len(nums)):
            # 当快指针找到不同元素时,更新慢指针并赋值
            if nums[fast] != nums[slow]:
                slow += 1
                nums[slow] = nums[fast]
        # 唯一元素的数量是慢指针索引+1
        return slow + 1

为什么这个解法能通过?

  • 直接在原数组的内存空间上修改元素,没有创建新数组,完全符合「原地操作」要求。
  • 利用数组有序的特性,双指针遍历的时间复杂度是O(n),空间复杂度是O(1),满足题目隐含的效率要求。

补充说明

你本地运行时看起来正确,是因为你可能直接打印了函数内重新赋值后的nums变量,但LeetCode的判题逻辑是从外部传入原数组,然后检查该数组的前k个元素是否符合要求——你的代码根本没碰原数组,自然会失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 23:02:38