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