算法随笔_31:移动零

上一篇:算法随笔_30: 去除重复字母-CSDN博客

=====

题目描述如下:

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

示例 1:

复制代码
输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]

=====

算法思路:

题目要求原地对数组进行操作。我们可以设两个下标指针p1,p2,p1=0,p2=0。

然后从左往右枚举数组,先不断移动p2,如果p2处不为0,我们把p1的元素和p2所指元素交换,然后继续移动p1。如果p2处为0,我们继续移动p2。

以此类推,直到p2到达数组末尾。此时的数组已经符合题目要求。

复制代码
class Solution(object):
    def moveZeroes(self, nums):
        
        p1=0
        p2=0
        nums_len=len(nums)
        while p2<nums_len:
            if nums[p2]!=0:
                nums[p1],nums[p2]=nums[p2],nums[p1]
                p1+=1
            
            p2+=1

此算法的时间复杂度为O(n) 。

相关推荐
毅炼1 分钟前
hot100打卡——day17
java·数据结构·算法·leetcode·深度优先
404未精通的狗4 分钟前
(数据结构)二叉树(上)
数据结构
Tisfy4 分钟前
LeetCode 3010.将数组分成最小总代价的子数组 I:排序 OR 维护最小次小
算法·leetcode·题解·排序·最小次小值
A先生的AI之旅8 分钟前
2026-1-30 LingBot-VA解读
人工智能·pytorch·python·深度学习·神经网络
Learn Beyond Limits8 分钟前
文献阅读:A Probabilistic U-Net for Segmentation of Ambiguous Images
论文阅读·人工智能·深度学习·算法·机器学习·计算机视觉·ai
丝瓜蛋汤8 分钟前
微调生成特定写作风格助手
人工智能·python
-To be number.wan12 分钟前
Python数据分析:Matplotlib 绘图练习
python·数据分析·matplotlib
naruto_lnq14 分钟前
Python生成器(Generator)与Yield关键字:惰性求值之美
jvm·数据库·python
m0_7369191020 分钟前
编译器命令选项优化
开发语言·c++·算法
Stream_Silver22 分钟前
【Agent学习笔记1:Python调用Function Calling,阿里云API函数调用与DeepSeek API对比分析】
开发语言·python·阿里云