27.Remove Element
总结:遍历并<u>原地</u>修改列表。(边迭代边pop会影响列表索引)
解法:
1.快慢双指针法—都从起始端遍历。O(n),O(1)
描述 快指针负责遍历数组,将符合条件的元素与慢指针对应的元素交换或者覆盖,快慢指针都递增,<u>快指针一直移动,只有符合条件,慢指针才移动</u>
例子
i=0
for j in range(len(nums)):
if(nums[j]!=val):
nums[i]=nums[j]
i+=1
return i
2.快慢双指针法—从两端遍历。O(n),O(1)
描述 起始段快指针负责遍历,将符合条件的元素与末端慢指针交换,快慢指针都向中间移动,<u>只要符合条件慢指针就移动,不符合条件快指针才移动,</u>当快指针等于慢指针时停止
例子
n=len(nums)
i=0
while(i<n):
if(nums[i]==val):
nums[i],nums[n-1]=nums[n-1],nums[i]
n=n-1
else:
i=i+1
return n