Move Zeroes

描述

给定一个数组nums,编写函数将数组内所有0元素移至数组末尾,并保持非0元素相对顺序不变。

例如,给定nums = [0, 1, 0, 3, 12],调用函数完毕后, nums应该是 [1, 3, 12, 0, 0]。

注意:

  1. 你应该“就地”完成此操作,不要复制数组。
  2. 最小化操作总数。

思路

按O(n)的思路来想,应该在遍历一次的过程中完成操作,那么应该有两个“指针”,一个num指针来遍历数组,一个pos来将为0的数字往后移位,遍历完毕后,即完成操作。

代码

1
2
3
4
5
6
7
8
9
10
11
class Solution(object):
def moveZeroes(self, nums):
"""
:type nums: List[int]
:rtype: void Do not return anything, modify nums in-place instead.
"""
pos = 0
for num in range(len(nums)):
if nums[num]:
nums[pos], nums[num] = nums[num], nums[pos]
pos += 1