题目描述
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
解法1
另外开辟一个数组
class Solution:
def moveZeroes(self, nums):
"""
:type nums: List[int]
:rtype: void Do not return anything, modify nums in-place instead.
"""
temp = []
n = len(nums)
for i in nums:
if i != 0:
temp.append(i)
m = n - len(temp)
temp = temp+[0]*m
for i,j in enumerate(temp):
nums[i] = j
解法2
双指针
class Solution:
def moveZeroes(self, nums):
"""
:type nums: List[int]
:rtype: void Do not return anything, modify nums in-place instead.
"""
n = len(nums)
i = 0
j = 0
while j<n:
if nums[j] == 0:
j = j+1
else:
nums[i],nums[j] = nums[j],nums[i]
i = i+1
j = j+1