classSolution: defremoveElement(self, nums: List[int], val: int) -> int: slow,fast = 0,0 for fast in nums: if(fast != val): nums[slow] = fast slow +=1 return slow
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
# 相向双指针法 # 时间复杂度 O(n) # 空间复杂度 O(1) classSolution: defremoveElement(self, nums: List[int], val: int) -> int: n = len(nums) left, right = 0, n - 1 while left <= right: while left <= right and nums[left] != val: left += 1 while left <= right and nums[right] == val: right -= 1 if left < right: nums[left] = nums[right] left += 1 right -= 1 return left