题目链接
我的题解:
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