从排序数组中删除重复项
我用这个代码实现从排序数组中删除重复项,就是LeetCode上的算法题,我先用for循环写,感觉思路没问题,但一直报错IndexError: list index out of range,后来查了下答案,只是把for改成了while,然后就通过了检查。这个是不是因为for循环range()函数中只会在第一次调用时计算len(nums),之后range的值就不会改变了。
// 请把代码文本粘贴到下方(请勿用图片代替代码)
这是for循环的:
1 nums = [1,1,1,2,3,1,1]
2 count = 0
3 if len(nums) == 1 or len(nums) == 0:
4 count = len(nums)
5 else:
6 for i in range(len(nums)-1):
7 print(len(nums))
8 if nums[i] == nums[i+1]:
9 del nums[i+1]
10 else:
11 count += 1
12
13 print(count)
error : IndexError: list index out of range
这是while正确的版本:
class Solution:
def removeDuplicates(self, nums): """ :type nums: List[int] :rtype: int """ i = 0 if len(nums) == 1 or len(nums) == 0: return len(nums) else: while i < (len(nums)-1): if nums[i] == nums[i+1]: del nums[i+1] else: i += 1 return
还有一个小问题,我的while的代码,最后只写了return也能返回正确的结果,这是什么原因?是不是因为LeetCode他帮我补上了?新手,只学了下基础语法,有些地方搞不清楚,多谢各位大佬了!
相关分类