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] = 0

283. 移动零
https://mingsm17518.github.io/2026/09/15/刷题笔记/Hot100/283. 移动零/
作者
Ming
发布于
2026年9月15日
许可协议