leetcode_283 移动零

97 阅读1分钟

要求

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

示例:

输入: [0,1,0,3,12]
输出: [1,3,12,0,0]

说明:

必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。

详解代码

class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        zeroIndex = 0
        for index in range(len(nums)):
            if nums[index] != 0:
                nums[zeroIndex] = nums[index]
                zeroIndex += 1

        for index in range(zeroIndex,len(nums)):
            nums[index] = 0

image.png

解题思路:我们设置一个zeroIndex,在第一次循环的时候,我们将所有非零的数据移动到最前面,并不断更新第一个0的位置,在第二次循环的时候,将zeroIndex及后面所有的数据全部都变成0,即可,空间不变。