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

LeetCode移除有序数组重复项报错:nums未定义原因咨询

问题解决:nums未定义报错及代码修正

报错根源

你的代码存在缩进错误:for循环及后续代码没有缩进在removeDuplicates方法的代码块内,导致这部分代码属于类的顶层逻辑,而非方法内部。而nums是方法的参数,只在方法内部有效,顶层代码根本找不到这个变量,所以会抛出“nums isn't defined”的错误。

原代码的其他问题

除了缩进,代码还不符合题目要求且存在逻辑错误:

  • 违反原地修改、O(1)额外内存的要求:额外创建了数组c
  • 索引越界:空列表c直接用c[x]赋值会报错
  • 错误赋值self = len(c):self是类方法的实例对象,不能随意赋值为数字

符合要求的修正代码

采用双指针实现原地去重:

class Solution(object):
    def removeDuplicates(self, nums):
        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]
        return slow + 1

代码说明

  • 慢指针slow:标记当前唯一元素的最后存放位置
  • 快指针fast:遍历整个数组寻找新的唯一元素
  • 当快指针找到与慢指针不同的元素时,慢指针前移一位,将快指针的元素覆盖过去
  • 最终返回slow + 1,即去重后元素的个数,数组前slow + 1位就是去重后的结果,完全满足题目要求

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

相关产品推荐
方舟 Agent Plan

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

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