算法随笔_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) 。

相关推荐
第九序言T1 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
m0_639906941 小时前
Redis入门|五种数据结构、使用场景、持久化RDB&AOF
数据结构·数据库·redis
Java后端的Ai之路1 小时前
CAS并发控制-从CPU指令到企业级乐观锁
vue.js·人工智能·python·cas·乐观锁
qq_426003962 小时前
UI自动化高频次登录login限流解决方案
python·ui·自动化
Sakura_j_h_2 小时前
EasyEDA PCB 快速设计Skills
c++·python·github
ZhengEnCi2 小时前
Agent 架构怎么选:从单 Agent 到多 Agent 编排的选型决策指南
算法·架构
quantdash_cc3 小时前
如何验证历史行情的交易日期是否完整覆盖研究区间?
python·数据分析·pandas·量化交易·股票数据·quantdash
I Am a robert girl3 小时前
当智能体学会“串通”:从长程交互中读懂涌现式合谋
python·多智能体系统·多智能体协作·llm agent·涌现式合谋·对齐问题·激励机制设计
秋天的怀念_David3 小时前
第二十二夜 · 数字迷雾
java·程序人生·算法
Pniubi3 小时前
力扣283移动零(双指针法)
算法·leetcode·职场和发展