1.题目描述
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。
2.解题思路
双指针遍历,快指针i和慢指针j,当i遇到非零时,与j交换,j++。一直向前遍历。
3.代码实现
class Solution(object):
def moveZeroes(self, nums):
"""
:type nums: List[int]
:rtype: None Do not return anything, modify nums in-place instead.
"""
i=0
j=0
while i < len(nums):
if nums[i]:
nums[i], nums[j] = nums[j], nums[i]
j+=1
i+=1