使用for循环,报错IndexError: list index out of range

题目描述

从排序数组中删除重复项

题目来源及自己的思路

我用这个代码实现从排序数组中删除重复项,就是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他帮我补上了?新手,只学了下基础语法,有些地方搞不清楚,多谢各位大佬了!


千万里不及你
浏览 1562回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python