题目描述
给一个数组 nums 写一个函数将 0 移动到数组的最后面,非零元素保持原数组的顺序
注意事项
1.必须在原数组上操作
2.最小化操作数样例
给出 nums = [0, 1, 0, 3, 12], 调用函数之后, nums = [1, 3, 12, 0, 0].
思路
快慢针。快针遍历数组,遇到非0数时把值赋给慢针,慢针下标加一。快针遍历结束后,若慢针还未到达最后一个元素,则把后面的值都置0。
代码
class Solution:
# @param {int[]} nums an integer array
# @return nothing, do this in-place
def moveZeroes(self, nums):
# Write your code here
if nums is None:
return
s = 0
f = 0
n = len(nums)
while f < n:
if nums[f] != 0:
nums[s] = nums[f]
s += 1
f += 1
while s < n:
nums[s] = 0
s += 1
复杂度分析
时间复杂度 O(n) ,空间复杂度 O(1) 。