解题思路
将不等于val的元素转进新的链表中,使用双指针,i相当于新链表,j相当于原链表
代码:
class Solution(object):
def removeElement(self, nums, val):
i = 0
for j in range(0,len(nums)):
if nums[j]!=val:
nums[i]=nums[j]
i+=1
return i
也记录下关于list.remove的坑
因为list的遍历是基于下标的,当你删除其中的一个元素的时候,列表实际上已经发生了变化,该元素后面的所有元素都往前移动了一个位置,所以下次遍历的时候就会跳过该元素后面的一个元素
解决办法
把不删除的元素重新添加到一个新的list中,如上代码所述