ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

【力扣100】4.移动零

2026/9/14 1:02:46 拓冰建站 浏览量
【力扣100】4.移动零

题目链接
我的题解:

class Solution:def moveZeroes(self, nums: List[int]) -> None:"""Do not return anything, modify nums in-place instead."""# 思路是先计算共有几个0,然后remove几次,再末位加几个0count=0for i in nums:if i ==0:count=count+1for j in range(0,count):nums.remove(0)nums.append(0)

我觉得这个方法太蠢了
想一下双指针的方法

class Solution:def moveZeroes(self, nums: List[int]) -> None:"""Do not return anything, modify nums in-place instead."""# fast指针遇见0向后挪# slow指针遇见0跟fast交换fast=0slow=0for fast in range(len(nums)):if nums[fast]==0:fast+=1else:nums[slow]=nums[fast]fast+=1slow+=1for i in range(slow,len(nums)):nums[i]=0

双指针,最后补0

class Solution:def moveZeroes(self, nums: List[int]) -> None:"""Do not return anything, modify nums in-place instead."""left = 0for i in range(len(nums)):if nums[i] != 0:nums[left], nums[i] = nums[i], nums[left]left += 1

双指针,快指针指到非0,就交换,因为慢指针都会指到0