【力扣100】4.移动零

题目链接

我的题解:

python 复制代码
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)

我觉得这个方法太蠢了

想一下双指针的方法

python 复制代码
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

python 复制代码
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

相关推荐
flashlight_hi19 小时前
LeetCode 分类刷题:1901. 寻找峰值 II
python·算法·leetcode
深瞳智检19 小时前
YOLO算法原理详解系列 第007期-YOLOv7 算法原理详解
人工智能·算法·yolo·目标检测·计算机视觉·目标跟踪
郝学胜-神的一滴20 小时前
中秋特别篇:使用QtOpenGL和着色器绘制星空与满月
开发语言·c++·算法·软件工程·着色器·中秋
qiuiuiu41320 小时前
CPrimer Plus第十六章C预处理器和C库总结2-qsort函数
java·c语言·算法
JuneXcy21 小时前
C++知识点总结用于打算法
c++·算法·图论
zhuzhuxia⌓‿⌓1 天前
线性表的顺序和链式存储
数据结构·c++·算法
未知陨落1 天前
LeetCode:95.编辑距离
算法·leetcode
杨小码不BUG1 天前
小鱼的数字游戏:C++实现与算法分析(洛谷P1427)
c++·算法·数组·信奥赛·csp-j/s
高山有多高1 天前
栈:“后进先出” 的艺术,撑起程序世界的底层骨架
c语言·开发语言·数据结构·c++·算法