【算法——双指针】LeetCode 283 移动零
题目描述:

思路:
(双指针) O(n)O(n)O(n)
给定一个数组 nums,要求我们将所有的 0 移动到数组的末尾,同时保持非零元素的相对顺序。

如图所示,数组nums = [0,1,0,3,12],移动完成后变成nums = [1,3,12,0,0] ,下面来讲解双指针的做法。
我们定义两个指针,i指针和k指针,i指针用来遍历整个nums数组,k指针用来放置nums数组元素。然后将非0元素按照原有的相对顺序都放置到nums数组前面,剩下的位置都置为0。这样我们就完成了0元素的移动,同时也保持了非0元素的相对顺序。
具体过程如下:
- 定义两个指针i和k,初始化i = 0,k = 0。
- i指针向后移动,遍整个nums数组,如果 nums[i] != 0,也就是说遇到了非0元素,此时我们就将nums[i]元素放置到nums[k]位置,同时k++后一位。
- 最后将k位置之后的元素都赋值为0。
实现细节:
遍历数组可以使用for(int x : nums),这样就少定义一个指针,代码也显得更加简洁。
时间复杂度分析: O(n)O(n)O(n) ,nnn是数组的长度,每个位置只被遍历一次。
时间复杂度分析: O(1)O(1)O(1) ,只需要常数的空间存放指针变量。
代码:
class Solution {
public:void moveZeroes(vector<int>& nums) {int k = 0;for(int x : nums)if(x != 0) nums[k++] = x;while(k < nums.size()) nums[k++] = 0; }
};
结果:

相关文章:
【算法——双指针】LeetCode 283 移动零
题目描述: 思路: (双指针) O(n)O(n)O(n) 给定一个数组 nums,要求我们将所有的 0 移动到数组的末尾,同时保持非零元素的相对顺序。 如图所示,数组nums [0,1,0,3,12],移动完成后变成nums [1,3,12,0,0] &am…...
腾讯云轻量服务器和云服务器的CPU处理器有差别吗?
腾讯云轻量应用服务器和CVM云服务器的CPU处理器性能有差别吗?创建轻量应用服务器时不支持指定底层物理服务器的CPU型号,腾讯云将随机分配满足套餐规格的物理CPU型号,通常优先选择较新代次的CPU型号。而云服务器CVM的CPU处理器型号、主频都是有…...
Redis_亿级访问量数据处理
11. 亿级访问量数据处理 11.1 场景表述 手机APP用户登录信息,一天用户登录ID或设备ID电商或者美团平台,一个商品对应的评论文章对应的评论APP上有打卡信息网站上访问量统计统计新增用户第二天还留存商品评论的排序月活统计统计独立访客(Unique Vistito…...
Java-类型和变量(基于C语言的补充)
一个简单的Java程序 args){ System.out.println("Hello,world"); } }通过上述代码,我们可以看到一个完整的Java程序的结构,Java程序的结构由如下三个部分组成: 1.源文件(扩展名为*.java):源文件带有类的定义…...
机器学习笔记:李宏毅diffusion model
1 概念原理 首先sample 一个都是噪声的vector然后经过denoise network 过滤一些杂质接着继续不断denoise,直到最后出来一张清晰图片 【类似于做雕塑,一开始只是一块石头(噪声很杂的雕塑),慢慢雕刻出想要的花纹】 同一个…...
STM32--TIM定时器(2)
文章目录 输出比较PWM输出比较通道参数计算舵机简介直流电机简介TB6612 PWM基本结构PWM驱动呼吸灯PWM驱动舵机PWM控制电机 输出比较 输出比较,简称OC(Output Compare)。 输出比较的原理是,当定时器计数值与比较值相等或者满足某种…...
git Authentication failed
情况是这样的,之前看代码只是clone了一份,但随着分支越来越多,有时候切换分支时必须先把修改的代码 stash 一下,觉得很麻烦,于是又clone了一份代码。然后pull代码是正常的,当push 代码的时候,去…...
【软考】2023系统架构设计师考试
目录 1 软考资格设置 2 考试报名 3 考试准备 4 参加考试 5 考试感受 6 其他 1 软考资格设置 2 考试报名 报名网址:https://www.ruankao.org.cn/ 3 考试准备 4 参加考试 2023年下半年系统架构设计师考试时间为11月4、5日。 5 考试感受 6 其他 最近好像有地区…...
opencv基础55-获取轮廓的特征值及示例
轮廓自身的一些属性特征及轮廓所包围对象的特征对于描述图像具有重要意义。本节介绍几个轮廓自身的属性特征及轮廓所包围对象的特征。 宽高比 可以使用宽高比(AspectRation)来描述轮廓,例如矩形轮廓的宽高比为: 宽高比 宽度&am…...
OpenCV图像处理——形态学操作
目录 连通性形态学操作腐蚀和膨胀开闭运算礼帽和黑帽 连通性 形态学操作 形态学转换是基于图像形状的一些简单操作。它通常在二进制图像上执行。腐蚀和膨胀时两个基本的形态学运算符。然后它的变体形式如开运算,闭运算,礼帽黑帽等 腐蚀和膨胀 cv.erode…...
修改VS Code终端的显示行数
文章目录 前言修改VS Code终端显示行数参考 前言 在我们使用VS Code运行代码的过程中,有时需要再终端中显示很多的运行过程信息或者结果。然而,VS Code的终端默认显示1000行的内容,随着显示内容的增多,之前的内容就丢失了。为了解…...
C++学习| MFC简单入门
前言:因为接手了CMFC的程序,所以需要对MFC编程方面有所了解。 C之MFC简单入门 MFC相关的概念MFCWIN32QT MFC项目基本操作MFC项目创建MFC项目文件解读界面和代码数据交互——加法器 MFC相关的概念 MFC MFC(Microsoft Foundation Classes微软…...
“一日之际在于晨”,欢迎莅临WAVE SUMMIT上午场:Arm 虚拟硬件早餐交流会
8月16日,盛夏的北京将迎来第九届WAVE SUMMIT深度学习开发者大会。在峰会主论坛正式开启前,让我们先用一份精美的元气早餐,和一场“Arm虚拟硬件交流会”,唤醒各位开发小伙伴的开发魂! 8月16日,WAVE SUMMIT大…...
leetcode454. 四数相加 II
题目:leetcode454. 四数相加 II 描述: 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 < i, j, k, l < n nums1[i] nums2[j] nums3[k] num…...
PHP证券交易员学习网站mysql数据库web结构apache计算机软件工程网页wamp
一、源码特点 PHP证券交易员学习网站 是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 下载地址https://download.csdn.net/download/qq_41221322/88205549 PHP证券交易员…...
对p-n结/AlGaN/GaN HEMTs中n-GaN掺杂浓度对栅极可靠性的影响
目录 第35届功率半导体器件与集成电路国际研讨会论文集2023年5月28日至6月1日,中国香港南方科技大学电气电子工程系,深圳标题:Impacts of n-GaN Doping Concentration on Gate Reliability of p-n Junction/AlGaN/GaN HEMTs摘要信息解释研究了…...
Mac M2 Pro安装使用Cocoapods
Mac Pro M2安装使用Cocoapods 在新公司要做iOS开发,所以在新电脑上安装Cocoapods 在升级gem,sudo gem update --system,和安装cocoapods时都遇到如下的提示: ERROR: While executing gem ... (Errno::EPERM)Operation not per…...
枚举缓存工具
此文章为笔记,为阅读其他文章的感受、补充、记录、练习、汇总,非原创,感谢每个知识分享者。 文章目录 1. 背景2. 枚举缓存3. 样例展示4. 性能对比5. 总结 本文通过几种样例展示如何高效优雅的使用java枚举消除冗余代码。 1. 背景 枚举在系统…...
【BASH】回顾与知识点梳理(二十五)
【BASH】回顾与知识点梳理 二十五 二十五. 特殊shell、PAM 模块、讯息传递和大量建置账号25.1 特殊shell特殊的 shell, /sbin/nologin 25.2 PAM模块25.3 Linux 主机上的用户讯息传递查询使用者: w, who, last, lastlog使用者对谈: write, mesg, wall使用…...
什么是Node js?什么是React?有什么区别
JavaScript是当今最流行的编程语言之一,它用于开发多种技术,两种这样的技术是Node.js和React。许多学生很难理解Nodejs和React之间的区别。 React和Nodejs之间的主要区别在于它们的使用位置。Nodejs 用于开发应用程序的服务器端,而Reactjs用于…...
2026年软件测试十大趋势预测:AI将重塑一切?
站在质效革命的十字路口当软件从静态工具进化为驱动社会运转的智能神经中枢,其复杂性与不确定性呈指数级增长。传统质量保障体系正经历系统性重构,AI的深度渗透、开发范式的升维以及业务对极致体验的追求,共同推动软件测试迈入“质效革命”新…...
微波管参数全解析:什么是噪声系数?
摘要:上一篇我们聊了决定卫星生死的核心参数「效率」,今天来讲决定雷达、卫星性能下限的关键指标 ——噪声系数。为什么地面雷达能看清几百公里外一架几米长的飞机?为什么卫星能接收到地面几瓦发射机传来的微弱信号?答案从来不是 …...
nli-distilroberta-base构建智能Agent:实现多轮对话与复杂任务推理
基于nli-distilroberta-base构建智能Agent:实现多轮对话与复杂任务推理 1. 智能Agent的应用场景与挑战 在现代人机交互场景中,用户越来越倾向于使用自然语言表达复杂需求。比如"帮我订下周二上午去上海的机票,并安排下午2点与客户A的会…...
如果大家都不断进步,模型最终是不是都差不多?
并不是。整体实力可能趋于一致,但模型或仍将保留差异化优势,市场不太可能最终形成赢家通 吃的格局。 的确,所有主要公司都在努力提高模型质量,但这并不意味着它们可以互相替代。不同公司在架构、训练数据、产品侧重点及技术方向上…...
Gradle国内镜像配置避坑指南:2024年最新阿里云源设置详解
Gradle国内镜像配置实战:2024年阿里云源深度优化方案 每次打开IDE看着进度条龟速前进,作为开发者的你是否也经历过这种绝望?特别是在紧急修复线上bug时,Gradle依赖下载的转圈动画简直能让人血压飙升。别担心,这份指南将…...
零基础部署Ostrakon-VL-8B:餐饮零售视觉AI,一键搭建企业级智能巡检平台
零基础部署Ostrakon-VL-8B:餐饮零售视觉AI,一键搭建企业级智能巡检平台 1. 为什么餐饮零售企业需要视觉AI? 想象一下这样的场景:你是一家连锁餐饮店的区域经理,手下管理着20家门店。每天,店长们会通过微信…...
Oracle归档日志爆满急救指南
作为运维工程师,你一定遇到过这样的紧急情况:/oracle/app/archivelog 目录突然爆满,数据库挂起无法写入,业务全线中断。你慌忙执行了网上找到的 DELETE OBSOLETE 命令,却发现磁盘空间纹丝不动 —— 目录里还躺着好几年…...
CTF逆向实战:从RC4到Base64,详解CTFshow萌新赛逆向题解
1. RC4加密算法在CTF逆向中的实战应用 RC4算法作为CTF逆向题目中的常客,经常出现在各类比赛中。这种流加密算法看似简单,但在实际解题过程中往往会遇到各种变种和陷阱。记得我第一次遇到RC4加密的题目时,完全不知道从何下手,现在回…...
别再死记公式了!手把手带你用Python脚本搞定二级运放GBW与相位裕度设计
用Python脚本解放模拟IC设计:二级运放GBW与相位裕度的自动化探索 在模拟集成电路设计的浩瀚海洋中,二级运算放大器就像是一艘精巧的帆船——结构看似简单,却需要设计师对每个参数都了如指掌才能驾驭得当。传统设计流程中,工程师们…...
如何在5分钟内为视频自动生成专业字幕:VideoSrt开源工具深度指南
如何在5分钟内为视频自动生成专业字幕:VideoSrt开源工具深度指南 【免费下载链接】video-srt-windows 这是一个可以识别视频语音自动生成字幕SRT文件的开源 Windows-GUI 软件工具。 项目地址: https://gitcode.com/gh_mirrors/vi/video-srt-windows 还在为视…...
