如果没有 0,则 left 和 right 同步向后搜索;如果出现 0,则 right 需要继续走到没有 0 的位置,而 left 则留下保存 0 的位置,然后二者的值交换一下,继续往后搜索。
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
classSolution:defmoveZeroes(self,nums:List[int])->None:"""
Do not return anything, modify nums in-place instead.
"""n=len(nums)left=right=0whileright<n:ifnums[right]!=0:nums[left],nums[right]=nums[right],nums[left]left+=1right+=1returnnums