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