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