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

Python LeetCode练习removeElement返回integer[]类型报错如何解决

问题根源
  1. 首先检查代码缩进:Python语法要求类的方法定义必须缩进4个空格,你贴出的两段代码中def removeElement行都没有对应缩进,若实际代码也是如此需要先修正缩进问题。
  2. 核心错误是返回值类型不匹配:你代码注释中标注的:rtype: int已经明确了返回值类型为整数,LeetCode第27题「移除元素」要求你原地修改输入数组nums后,返回删除元素后的新数组长度(整数),而非直接返回修改后的nums列表。你两次提交都返回了列表对象,和要求的返回类型不符,因此触发类型错误。
修复方案

方案1:基于现有逻辑修改

你原本修改数组的逻辑是可行的,仅需调整返回值为数组长度即可:

class Solution(object):
    def removeElement(self, nums, val):
        """
        :type nums: List[int]
        :type val: int
        :rtype: int
        """
        while nums.count(val) != 0:
            nums.remove(val)
        # 返回新数组长度,而非数组本身
        return len(nums)

方案2:双指针优化写法

反复调用count和remove方法会产生多次遍历开销,双指针法可将时间复杂度降至O(n),更推荐使用:

class Solution(object):
    def removeElement(self, nums, val):
        """
        :type nums: List[int]
        :type val: int
        :rtype: int
        """
        slow = 0
        for fast in range(len(nums)):
            if nums[fast] != val:
                nums[slow] = nums[fast]
                slow += 1
        return slow
补充说明

LeetCode原地修改类的数组题目,后台评判逻辑会根据你返回的长度k,校验nums数组前k位的元素是否符合要求,不需要你返回整个数组,严格按照题目给出的返回类型要求返回对应值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:24:05