Python LeetCode是一个简单的问题,但在解决函数返回类型时有一个混乱的澄清

Python LeetCode是一个简单的问题,但在解决函数返回类型时有一个混乱的澄清,python,list,Python,List,昨晚,我在leetcode中尝试了一些此类简单的问题。不过,到目前为止,我在leetcode中尝试了近20个问题,所有这些问题、示例和澄清都经过了很好的讨论或很容易理解。但当我试着解决这个问题时,乍一看,我试图理解描述 过了一会儿,我就更难理解了,然后我试着去理解例子和解释,这对我来说似乎更复杂了 class Solution: def removeDuplicates(self, nums: List[int]) -> int: nums = list(set(n

昨晚,我在leetcode中尝试了一些此类简单的问题。不过,到目前为止,我在leetcode中尝试了近20个问题,所有这些问题、示例和澄清都经过了很好的讨论或很容易理解。但当我试着解决这个问题时,乍一看,我试图理解描述

过了一会儿,我就更难理解了,然后我试着去理解例子和解释,这对我来说似乎更复杂了

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        nums = list(set(nums))
        temp = 0
        print(nums)
        
        for i in range(len(nums)):
            temp += 1
        return temp
但是从我的角度来说,我试着去理解和解决问题,试着用这种方式来解决问题,但我不知道我的问题在哪里?因为它们将返回类型视为int,并且是删除重复之后的列表大小的长度。但当我运行我的代码时,我似乎是这样,

这里我的标准输出与他们的预期输出一样,那么为什么我的输出与他们不一样呢? 从他们的描述中,他们说他们期望int类型的返回值,并且在他们的函数输出声明中声明为返回类型将是int,那么为什么他们向我显示列表类型的期望输出

请详细解释我的问题,以便我能理解这个问题,并给我一个解决方案来思考这个问题


提前感谢。

如问题所述,您需要返回正确的元素数,但问题中提到的另一件事是您需要返回。就地执行,无额外内存开销,而且您显然是在分配新列表,而不是使用旧列表


简单地说,使用循环而不是内置的实用程序/功能。

这个问题要求您修改输入列表。相反,您当前的代码
nums=list(set(nums))
创建了一个新列表,该列表只在函数内部可见,对调用方不可见

因此,仅返回列表的长度是不够的,还必须修改原始列表

您可以想象leetcode正在做这样的事情:

nums = [1,1,2]
length = Solution().removeDuplicates(nums)
expected = nums[:length]
由于您没有修改
nums
,并且
length
为2,因此您的“实际”输出为
nums[:2]===[1,1]