283. 移动零
题目
283. 移动零(简单)
给定一个数组 nums,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序。
请注意,必须在不复制数组的情况下原地对数组进行操作。
示例 1:
输入:
[0,1,0,3,12]输出:
[1,3,12,0,0]示例 2:
输入:
[0]输出:
[0]提示:
1 <= nums.length <= 10^4-2^31 <= nums[i] <= 2^31 - 1
思路
快慢指针两次填充:pos
指向下一个非零数应放的位置,第一遍把非零数依次前移,第二遍把
[pos, n) 补成 0。也可以一遍扫描,遇到非零就与
pos 位置交换。
代码
class Solution:
def moveZeroes(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
pos = 0
for num in nums:
if num != 0:
nums[pos] = num
pos += 1
for i in range(pos, len(nums)):
nums[i] = 0283. 移动零
https://mingsm17518.github.io/2026/09/15/刷题笔记/Hot100/283. 移动零/