leetcodepython问题

leetcodepython问题,python,list,Python,List,在试图解决LeetCode中的几个问题时,我遇到了一个非常奇怪的问题 问题26:从排序数组中删除重复项 为了对这个问题进行编码,我使用了: class Solution(object): def removeDuplicates(self, nums): nums = list(set(nums)) return len(nums) 这段代码所做的是首先将列表转换为一个集合,然后 然后返回列表,列表将依次删除重复项 但是,当我尝试将此代码提交到leetcode解决方案时,会返

在试图解决LeetCode中的几个问题时,我遇到了一个非常奇怪的问题

问题26:从排序数组中删除重复项

为了对这个问题进行编码,我使用了:

class Solution(object):
def removeDuplicates(self, nums):
    nums = list(set(nums))
    return len(nums)
这段代码所做的是首先将列表转换为一个集合,然后 然后返回列表,列表将依次删除重复项

但是,当我尝试将此代码提交到leetcode解决方案时,会返回修改后的nums长度,但当程序尝试访问nums阵列时,它不会更新

这只发生在Leetcode编辑器中,在我的系统中,如果我尝试打印NUM,则会显示修改后的值,不确定是什么错误

现在,同样的情况也发生在其他问题上,例如:

旋转阵列

将n个元素的数组向右旋转k步

例如,当n=7和k=3时,数组[1,2,3,4,5,6,7]旋转为[5,6,7,1,2,3,4]

我对这个问题的解决办法如下:

class Solution(object):
 def rotate(self, nums, k):
    newIndex = k % len(nums)
    nums = nums[newIndex+1:len(nums)] + nums[0:newIndex+1]
    print nums
但我再一次对我从提交中得到的结果感到惊讶

请注意,在“您的标准输出”中,我们可以看到相应地修改了列表。

请告诉我是否还有其他人面临此问题,或者是否有人知道此问题的解决方案。

您可以使用
sudo service network manager restart

解决方案是使用:
nums[:]=nums[newIndex+1:len(nums)]+nums[0:newIndex+1]


执行
nums=nums[newIndex+1:len(nums)]+nums[0:newIndex+1]
只会更改引用,而
nums[:]
更改列表的值。

在您的代码中发生的是您返回的长度用于在后端移动
nums
,以打印
nums
列表的唯一值。因此,问题的要求是返回的长度将从索引0移动到返回的长度。因此,在返回唯一值的长度时,我们还必须修改原始列表,即
nums
。 第一链路的解决方案

class Solution:
    def removeDuplicates(self, nums):
        if(len(nums) == 0):
            return 0
        elif len(nums) == 1 :
            return 1
        else:
            l = 1
            for i in range (1,len(nums)):
                if nums[i] != nums[i-1] :
                    #l+=1
                    nums[l] = nums[i]
                    l+=1
            return l

请查看此帖子,希望它能解决您的问题。请忽略以上评论并回答,我刚刚更新了一个旧问题。
class Solution:
    def removeDuplicates(self, nums):
        if(len(nums) == 0):
            return 0
        elif len(nums) == 1 :
            return 1
        else:
            l = 1
            for i in range (1,len(nums)):
                if nums[i] != nums[i-1] :
                    #l+=1
                    nums[l] = nums[i]
                    l+=1
            return l