1、双指针
class Solution:
def moveZeroes(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
# 双指针
size = len(nums)
zero = -1
for i in range(size):
if nums[i] == 0 and zero<0:
zero = i # 第一个0的位置
elif nums[i] !=0 and zero>=0:
nums[zero] = nums[i] # 与当前的第一个0交换位置
nums[i] = 0
zero = zero+1
官方优化版:
class Solution:
def moveZeroes(self, nums: List[int]) -> None:
n = len(nums)
left = right = 0
while right < n:
if nums[right] != 0:
nums[left], nums[right] = nums[right], nums[left]
left += 1
right += 1