题目描述
给定一个数组 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

本文介绍了一种将数组中所有零元素移至数组末尾同时保持非零元素相对顺序的方法。提供了两种解决方案:一种是使用额外数组进行元素的重新排列;另一种是采用双指针技术在原地完成元素调整。
411

被折叠的 条评论
为什么被折叠?



