skip to content
Liu Yang's Blog

Leetcode#283-HOT-移动零

/ 1 min read

Table of Contents

读题

将所有0移动到数组后方,非0元素顺序不变。

思路

看题解是用双指针,左指针的左侧表示已经处理好的数组元素,右指针的左侧表示待处理的数组元素。

每次右指针指向的元素非0时,交换左右指针的值,并且左右指针右移动,否则只有右指针右移。

可知,左指针恒指向0元素,比如刚开始如果数组前有非0元素,此时左右指针则会一起移动,直到共同指向0.

实现

class Solution:
def moveZeroes(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
left, right = 0,0
n = len(nums)
while right<n:
if nums[right] !=0:
nums[left],nums[right] = nums[right],nums[left]
left += 1
right+=1