在这道题中,涉及到了之前就一直存在的一个错误提醒:IndexError: list index out of range,整好存在这个题,找到了问题所在。
这里循环的部分针对数组采用倒许的方式,查看相邻两个元素是否相等。 从输出可以看出:
0 [0, 0, 1, 1, 1, 2, 2, 3, 3, 4] 1 [0, 0, 1, 1, 1, 2, 2, 3, 4] 9 2 [0, 0, 1, 1, 1, 2, 2, 3, 4] 3 [0, 0, 1, 1, 1, 2, 3, 4] 8 4 [0, 0, 1, 1, 1, 2, 3, 4] 5 [0, 0, 1, 1, 2, 3, 4] 7 6 [0, 0, 1, 2, 3, 4] 6 7 [0, 0, 1, 2, 3, 4] 8 [0, 1, 2, 3, 4] 5 51、在删除元素的过程中,数组nums已经发生了变化。 2、举个例子,当i=7时,接着要判断nums[2]==nums[1],那么这里后面的8个数已经比较过了,哪怕后面的数都相同,nums[3]=nums[2],删除nums[2]之后,整个数组剩下了三个元素,nums的index不会超出范围,因为最先开始排序比较的也是nums[2]逐次和前面的数进行比较。
输出结果为:
0 [0, 1, 1, 1, 2, 2, 3, 3, 4] 9 1 [0, 1, 1, 2, 2, 3, 3, 4] 8 2 [0, 1, 1, 2, 2, 3, 3, 4] 3 [0, 1, 1, 2, 3, 3, 4] 7 4 [0, 1, 1, 2, 3, 4] 6并且提示:
IndexError: list index out of range就是因为此时数组长度为6,那么在比较nums[5]==nums[6]时,超出了数组大小。所以会出现错误。