【力扣100】4.移动零
题目链接
我的题解:
class Solution:
def moveZeroes(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
# 思路是先计算共有几个0,然后remove几次,再末位加几个0
count=0
for i in nums:
if i ==0:
count=count+1
for 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=0
slow=0
for fast in range(len(nums)):
if nums[fast]==0:
fast+=1
else:
nums[slow]=nums[fast]
fast+=1
slow+=1
for 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 = 0
for i in range(len(nums)):
if nums[i] != 0:
nums[left], nums[i] = nums[i], nums[left]
left += 1
双指针,快指针指到非0,就交换,因为慢指针都会指到0