题目描述
示例
方法:双指针
算法:
令快、慢指针 j 和 i 都从0出发,
- 当 nums[j] == val 时,什么都不做,快指针 j 继续向右移
- 当 nums[j] != val 时,将快指针 j 找到的不是val的值放在 nums 的 慢指针 i 所指的位置 , 慢指针 i 向右移一步
直到快指针 j 到达数组 nums 的末尾为止。
代码:
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
# 如果nums中没有val的话,不需要移除任何元素,返回原数组的长度
if val not in nums:
return len(nums)
i = 0
for j in range(len(nums)):
if nums[j] != val:
nums[i] = nums[j]
i += 1
return i