class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
#从前往后删
# for i in range(len(nums)-1,-1,-1):
# if nums[i]==val:
# nums.pop(i)
# return len(nums)
#所谓删除就是不断的覆盖当前存在的数字
# i = 0
# j = 0
# while i < len(nums):
# if nums[i] != val:
# nums[j] = nums[i]
# j += 1
# i += 1
# return j
i=0
j=0
while i<len(nums):
if nums[i]==val:
i+=1
else:
nums[j] = nums[i]
j+=1
i+=1
return j
题目解析
- 从后往前删除
- 用一个for循环即可,每次for循环的起始位置需要更新
- 如果当前的值等于该元素,弹出即可
- 从前往后删
- 使用双指针进行删除
- 如果当前元素不等于val,那么将val的值赋给nums[i],然后再更新慢指针
- 如果当前元素不等于val,那就移动快指针
- 最后返回慢指针移动的次数,移动的次数就是不等于val的元素的个数,移动一次表明就出现一个val