27. Remove Element
要從兩個方向看
- 如果現在最右邊的指針,當下的值和 val 相同,想辦法往左邊移,移動到和 val 不同即可停止。
- 如果左邊的指針指到的值剛好和 val 相同,將這個值往後面丟(和右邊指針的值交換)
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
left = 0
right = len(nums) - 1
while left < right:
while nums[right] == val and left < right:
right -= 1
if nums[left] == val:
nums[left], nums[right] = nums[right], nums[left]
left += 1
return sum([1 for num in nums if num != val])