题目
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
- 必须在原数组上操作,不能拷贝额外的数组。
- 尽量减少操作次数。
solution_1
思路:利用双指针,把非零元素全部复制到数组前面,后面的元素直接赋零。
结果:执行用时:64 ms
排名:战胜91.68%
代码如下
class Solution:
def moveZeroes(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
i = -1 # 慢指针
for j in range(len(nums)): # 快指针
if nums[j] != 0:
i += 1
nums[i] = nums[j]
j += 1
for j in range(i + 1, len(nums)): # 后面元素全部赋0
nums[j] = 0