当前位置: 首页 > article >正文

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

 

 

 


http://www.kler.cn/a/526653.html

相关文章:

  • maven、npm、pip、yum官方镜像修改文档
  • .NET Core缓存
  • docker配置mysql并使用mysql connector cpp编程
  • C++模板初识
  • 创建 priority_queue - 进阶(内置类型)c++
  • 某盾Blackbox参数参数逆向
  • DeepSeek-R1 模型及GRPO算法学习
  • 浅谈网络 | 容器网络之Flannel
  • 21.3-启动流程、编码风格(了解) 第21章-FreeRTOS项目实战--基础知识之新建任务、启动流程、编码风格、系统配置 文件组成和编码风格(了解)
  • 雅思写作(支持句)
  • 告别重启!Vue CLI 动态代理配置实战:实现热更新与灵活配置
  • Redis实战(黑马点评)——redis存储地理信息、位图、HyperLogLog 用法
  • 【视频+图文详解】HTML基础1-html和css介绍、上网原理
  • 从零开始学习电池SOC算法
  • MySQL知识点总结(十五)
  • Deep Seek R1本地化部署
  • 如何解决Unit sshd.service could not be found
  • Vue.js组件开发-实现全屏背景图片滑动切换特效
  • 自动备案批量查询脚本
  • 系统思考—蝴蝶效应
  • AngularJS 模块
  • 【电工基础】低压电器元件,低压断路器(空开QF),接触器(KM)
  • Python NumPy(8):NumPy 位运算、NumPy 字符串函数
  • 【Leetcode 每日一题 - 补卡】219. 存在重复元素 II
  • Python 变量和简单数据类型(Python之禅)
  • Leetcode:350