283.移动零

news/2025/10/16 14:15:16/文章来源:https://www.cnblogs.com/lachesism/p/19145488

283.移动零

Posted on 2025-10-16 14:08  lachesism  阅读(0)  评论(0)    收藏  举报

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

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

 

示例 1:

输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]

示例 2:

输入: nums = [0]
输出: [0]

 

提示:

  • 1 <= nums.length <= 104
  • -231 <= nums[i] <= 231 - 1

 

算法逻辑详解

  1. 双指针技巧:
  • nonZeroIndex 指针用于标记下一个非零元素应该放置的位置
  • i 指针用于遍历整个数组
  1. 第一次遍历(移动非零元素):
  • 遍历数组中的每个元素
  • 当遇到非零元素时,将其移动到 nonZeroIndex 位置,然后递增 nonZeroIndex
  • 这样可以保持非零元素的相对顺序
  1. 第二次遍历(填充零):
  • 完成第一次遍历后,所有非零元素已经按原顺序放置在数组前面
  • 从 nonZeroIndex 开始,将数组剩余部分填充为0

优化说明

  1. 最小化操作次数:
  • 每个元素最多只会被写入一次
  • 避免了不必要的交换操作
  • 零元素只在最后统一填充,减少了写操作
  1. 时间复杂度:
  • O(n),其中n是数组长度
  • 需要两次遍历,但总操作次数不超过2n
  1. 空间复杂度:
  • O(1),完全是原地操作,不需要额外空间

这种方法相比于普通的交换法(每次发现非零元素就与前面位置交换)更高效,因为它减少了写操作的次数,特别是当数组中有大量零元素时效率更高。

 

class Solution {public void moveZeroes(int[] nums) {// 用于标记下一个非零元素应该放置的位置int nonZeroIndex = 0;// 第一次遍历:将所有非零元素移到数组前面for (int i = 0; i < nums.length; i++) {if (nums[i] != 0) {nums[nonZeroIndex++] = nums[i];}}// 第二次遍历:将剩余位置填充为0while (nonZeroIndex < nums.length) {nums[nonZeroIndex++] = 0;}}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/938228.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全自动红外测油仪厂家推荐/国产红外测油仪品牌推荐/靠谱供应商采购推荐

在环境监测、石油化工、污水处理等诸多领域,全自动红外测油仪作为检测水中石油类和动植物油含量的关键设备,其精准度与效率直接影响着水质评估与污染治理效果。天津众科创谱科技有限公司凭借深厚的技术积累、过硬的产…

洛谷P4516 [JSOI2018] 潜入行动

朴素的设计 \(DP\),\(dp_{i,j,0/1,0/1}\) 表示 \(i\) 的子树选了 \(j\) 个点,当前选没有,当前被覆盖没有。 令人火大的转移方程(具体转移边界还请看代码): \[\begin{align}&dp_{u,j,0,0} = \sum_{k=1}^{siz_…

Mysql1064,最常见的语法错误

MySQL 错误代码 1064 是最常见的语法错误,表示 SQL 语句存在语法问题,数据库无法解析。通常提示信息会包含具体错误位置(如 near ... at line N)。 常见原因及解决方法:SQL 语法错误(最常见) 拼写错误:关键字写…

一对一直播源码搭建:后来者的源码选择与专业研发的关键考量

在当今数字化社交蓬勃发展的时代,一对一直播平台正成为众多创业者关注的焦点。如果您正在考虑进入这一领域,但尚未决定是购买源码还是自主研发,亦或是正在寻找专业的开发团队,那么本文将为您提供全面而专业的指导。…

总氮检测仪靠谱供应商,总氮水质分析仪厂家推荐,总磷/氨氮/COD等仪器哪家好?

总氮作为衡量水体富营养化程度的关键指标,其精准检测对于水环境治理、工业废水排放管控及饮用水安全保障至关重要。在总氮水质分析仪的采购过程中,选择技术可靠、性能稳定且服务完善的产品与品牌,是确保检测工作高效…

多领域对话自动评估技术突破

介绍一种基于双向LSTM和注意力机制的新型对话评估模型,该模型在多领域对话中客户满意度预测准确率提升27%,能够泛化应用于不同对话管理系统,无需依赖特定对话行为特征。自动评估与语音助手的对话交互 随着与语音助手…

直面挑战:MySQL 千万级数据高性能优化实战指南

当开发中数据量从百万级跃升至千万级、甚至亿级时,这时候我们该怎么办呢?MySQL 的默认配置和简单的 CRUD 操作将不再适用。一次慢查询、一个锁等待都可能引发雪崩效应,导致整个系统响应缓慢。要驾驭海量数据,所以我…

泳池水检测仪厂家推荐,余氯检测仪哪个品牌好?COD水质/总氮/氨氮靠谱供应商

天津众科创谱科技有限公司 推荐指数:★★★★★ 品牌实力:作为国家级高新技术企业、水质快检标准制定单位,拥有强大的研发实力,研发团队由天津理工大学博士生导师朱连杰教授领衔,硕博比例超80%。累计获得40余项授…

vscode的本地界面

vscode的本地界面 漫思

常见的名词

PM(product manager)项目经理PD(product desinger)产品经理BA (business analyst)业务分析师,将抽象的业务需求转换为落地的需求ui设计师页面,视觉呈现QA测试工程师产品研发后,验证产品功能是否符合需求DBA(数据库管…

线段树与平衡树

线段树主要在区间(长度或索引)固定时,进行区间修改和查询、最值、求和等操作(一般这种操作为O(logn)); 平衡树主要在元素集合为动态的情况下,可频繁增删、维护顺序,查询数值x的排名(输出最小的排名)、查询排名为…

面向对象进阶-2

面向对象进阶-2    所有类均继承object1.类的嵌套:函数:参数可以是任意类型。字典:对象和类都可以做字典的key和value继承的查找关系对象和类都可以做字典的key和value class StackConfig(object):passclass Us…

CF2155 Codeforces Round 1056 (Div. 2) 游记(VP)

连蒙带猜拼尽全力 $4t$,表现分 $2000$。省流 连蒙带猜拼尽全力 \(4t\),表现分 \(2000\)。10.16 内含剧透,请vp后再来。 不是题解!!!!!!! 赛前 翘课了,结果刚开始 \(vp\) 就被发微信找过来,再也不敢翘这种点…

【隐语SecretFlow社区】万字长文解读构建可信数据空间相关标准

打开链接点亮社区Star,照亮技术的前进之路。每一个点赞,都是社区技术大佬前进的动力Github 地址: https://github.com/secretflow 在国家数据局统筹推动下,可信数据空间正成为国家数据基础设施的重要组成。它通过数…

Android四大组件之Servers、BroadcastReceiver、ContentProvider(内容提供者)

二、Service(服务) 1 什么是Service? 你可以把Service想象成一个"后台默默打工的工人"。它没有UI界面,默默地在后台干活,比如播放音乐、下载文件、处理网络请求等。即使你退出了App,Service也可以继续…

详细介绍:verilog中的FIR滤波器和自控中一阶低通滤波器的区别和共性

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年智能装备与机器人国际学术会议(IER 2025)

2025 International Conference on Intelligent Equipment and Robotics(IER 2025) 2025年智能装备与机器人国际学术会议(IER 2025) 在这里看会议官网详情 2025年11月7-9日 | 中国陕西西安 截稿时间:见官网 收…

编程计算定投黄金的收益率

首先用Bing搜gold price,得到下图:然后用Gwenview, IrfanView等裁剪图片,得到下图:然后用程序找出红线上各点坐标。如果提取红色通道,由于白是(255,255,255),红是(255,0,0),就分不清了。所以我们提取绿色通道。…

客户管理软件是什么?深度解析及标杆产品推荐

在当今竞争激烈的商业环境中,客户关系管理(CRM)软件已成为企业提升销售效率、优化客户服务、驱动业务增长的核心引擎。但究竟什么是客户管理软件?如何选择最适合自己的CRM系统?本文将深入解析,并为您推荐好用的C…

openresty开发lua-resty-openssl之rsa公钥加密私钥解密 - liuxm

lua-resty-openssl之rsa公钥加密私钥解密1.创建文件 /usr/local/openresy/rsa_test.lualocal pkey = require "resty.openssl.pkey" local str = require "resty.string"-- 生成密钥对 local fun…