Leetcode 283.移动零

给定一个数组 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

进阶:你能尽量减少完成的操作次数吗?

直接采用快排中的思想,采用双指针的思想,把数组划分为三个区域来处理

当第一个区域的顺序正确,第二个区域都是0,且数组内以及没有要处理的元素时,该数组就符合题目要求处理完毕了。因为必须保证除0外数组中元素原有顺序不能被打乱,所以发现0后需要将之后非0元素一个一个挨着往前移动。所以需要两个指针,因为这里是数组,所以直接用下标就可以解决问题。

将dest=-1;cur=0;让cur先走,如果等于零就跳过,当找到下一个非0元素时就直接和++dest换位置,如果cur就在dest之前,那++dest再换位置就等于没换,只有遇到0时cur和dest中间才会隔出来元素,从而交换后直接把0移动到后面,把后面的元素移动到原本0的位置,就实现了题目的要求,代码很简单,一个for循环直接搞定。

class Solution {
public:
    void moveZeroes(vector<int>& nums) 
    {
        for(int dest=-1,cur=0;cur<nums.size();cur++)
        {
            if(nums[cur]!=0)
            {
                swap(nums[++dest],nums[cur]);
            }
        }
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

来了解AI自动直播带货新玩法!普通人也能轻松上手!

抖捧AI实景自动直播系统&#xff0c;以低成本常态化高效率的直播方式&#xff0c;为进入直播间的用户打造了更真实的体验&#xff0c;更帮助了大量的实体商家降低自播的成本&#xff0c;实现降本增效&#xff0c;接下来看看抖捧最新的餐饮休娱案例及玩法&#xff0c;每天直播八…

实用工具推荐

可以提高你工作效率的工具 SnipasteSnipaste Snipaste Snipaste

数字化商品管理:革新鞋服零售模式,引领智能商业新时代

随着科技的快速发展&#xff0c;数字化浪潮席卷各行各业&#xff0c;鞋服零售企业亦不例外。在这个新时代&#xff0c;数字化商品管理不仅成为鞋服零售企业革新的关键&#xff0c;更是其引领智能商业浪潮的重要引擎。本文将围绕数字化商品管理如何深刻影响鞋服零售模式&#xf…

HashCat报错

HashCat执行命令 hashcat -a 3 -m 17225 -2 ?l?u $pkzip2$3*1*1*0*0*24*143c*4917*4bfe891c40b54ed8a613dc05c1a5a5c6df68da07f2a00e55d705a5bc04f3c149a53ab891*1*0*8*24*2e57*490e*028de43f9edfed13437c0964625b78391e2876248d3362b240c2bbfd7dbc3ff022ef2e07*2*0*67*5b*d6…

建立流行病预警指数体系并优化传染病模型:对公共卫生突发事件监测数据的分析

应对紧急情况造成的损害的能力是紧急能力现代化的重要象征。 在应对紧急情况时&#xff0c;政府机构和决策者需要更多信息来源&#xff0c;以更有效地估计灾难可能的演变。 这篇论文提出了一个预测COVID-19动态演变的优化模型&#xff0c;该模型将系统动力学的传播算法与预警指…

css pointer-events 多层鼠标点击事件

threejs 无法滑动视角&#xff0c;菜单界面覆盖threejs操作事件。 pointer-events /* Keyword values */ pointer-events: auto; pointer-events: none; pointer-events: visiblePainted; /* SVG only */ pointer-events: visibleFill; /* SVG only */ pointer-events: visib…

【vue+leaflet】vue项目中使用leaflet绘制室内平面图、leaflet.pm在平面图中绘制点、线、面图层(一)

效果图: 一,插件安装 npm i leaflet --save // 我的版本^1.9.4 npm i leaflet.pm --save // 我的版本^2.2.0附官网链接: leaflet官网: https://leafletjs.com/index.html leaflet.pm官网: https://www.npmjs.com/package/leaflet.pm?activeTabreadme 二,模块引入 因为我…

OLMo论文里的模型结构的小白解析

模型参数量 以7B为例&#xff0c;隐藏层为4086&#xff0c;attention heads为32 训练的token量为2.46T 训练策略 超参数 在我们的硬件上优化训练吞吐量&#xff0c;同时最小化损失峰值和缓慢发散的风险来选择超参数 损失峰值&#xff1a;在机器学习中&#xff0c;"损失峰…

lazada、速卖通卖家如何掌握自养号测评技巧打造高评价产品?

做跨境电商卖家都知道&#xff0c;国外的买家购物比较理性&#xff0c;也喜欢货比三家&#xff0c;所以店铺想要留住客户&#xff0c;就需要一些优质的产品来吸引他们。产品评价是卖家获取买家信任的重要途径&#xff0c;评价越高的产品&#xff0c;销量也就越好。 尤其是 Shop…

猫多喝水好吗?可以促进猫咪多喝水的主食分享

猫咪多喝水确实是有益的。适量的饮水对于猫咪的健康至关重要&#xff0c;有助于维持体液平衡、促进消化、减少便秘的风险&#xff0c;并对泌尿系统的健康起到保护作用。正常情况下&#xff0c;建议每公斤体重的猫每天摄入60-80毫升的水&#xff0c;除了与体重相关外&#xff0c…

RabbitMQ消息可靠性投递与ACK确认机制

1.RabbitMQ的消息可靠性投递 什么是消息的可靠性投递 保证消息百分百发送到消息队列中去保证MQ节点成功接收消息消息发送端需要接收到MQ服务端接收到消息的确认应答完善的消息补偿机制&#xff0c;发送失败的消息可以再感知并二次处理 RabbitMQ消息投递路径 生产者–>交换机…

碳化硅模块使用烧结银双面散热DSC封装的优势与实现方法

碳化硅模块使用烧结银双面散热DSC封装的优势与实现方法 新能源车的大多数最先进 (SOTA) 电动汽车的牵引逆变器体积功率密度范围从基于 SSC-IGBT 的逆变器的 <10 kW/L 到基于 SSC-SiC 的逆变器的约 25 kW/L。100 kW/L 代表了这一关键指标的巨大飞跃。 当然&#xff0c;随着新…

GaiaDB-X 获选北京国家金融科技认证中心「数据领域首批专项示范与先行单位」

2023 年 12 月 21 日至 22 日&#xff0c;「2023北京国际金融安全论坛暨金融科技标准认证生态大会」在北京金融安全产业园举办。百度智能云分布式数据库 GaiaDB-X 产品荣登「数据领域首批专项示范与先行单位」名单&#xff0c;并获得了由北京国家金融科技认证中心颁发的「数据产…

Sora背后的论文(1):使用 lstms 对视频展现进行无监督学习

之前那篇《Sora背后的32篇论文》发出后&#xff0c;大家都觉得不错&#xff0c;有很多小伙伴都开始啃论文了。 那么我就趁热打铁&#xff0c;把这32篇论文的通俗解读版贴一下。 从去年开始&#xff0c;我基本上形成了一个思维方式&#xff0c;任何事情做之前先看看 有没有好的…

Vue3+vite搭建基础架构(9)--- 使用vite-plugin-svg-icons

Vue3vite搭建基础架构&#xff08;9&#xff09;--- 使用vite-plugin-svg-icons 说明安装vite-plugin-svg-icons使用vite-plugin-svg-icons添加svg-icon组件和全局组件js文件 测试svg雪碧图 说明 这里记录下自己在Vue3vite的项目使用vite-plugin-svg-icons来全局使用svg雪碧图…

算法沉淀——多源 BFS(leetcode真题剖析)

算法沉淀——多源 BFS&#xff08;leetcode真题剖析&#xff09; 01.矩阵02.飞地的数量03.地图中的最高点04.地图分析 多源 BFS 是指从多个源点同时进行广度优先搜索的算法。在传统的 BFS 中&#xff0c;我们通常从一个起始点开始&#xff0c;逐层遍历所有的相邻节点。而在多…

移动端App自动化之触屏操作自动化

工作中我们经常需要对应用的页面进行手势操作&#xff0c;比如滑动、长按、拖动等&#xff0c;AppiumDriver 为我们提供一个模拟手势操作的辅助类 TouchAction&#xff0c;可以通过它对手机屏幕进行手势操作。 具体用法参见链接&#xff1a;chromedriver下载地址与webview自动…

SQL语法-where关键字的条件解析

在sql语言中有很多命令需要或者可以通过where关键字来筛选符合条件的数据 例如修改数据用到的命令—— 【update 表名 set 字段名1值1, 字段名2值2,...where 条件;】 例如删除数据用到的命令—— 【delete from 表名 where 条件;】 例如查询数据用到的命令—— 【select 字段名…

【IEEE出版、EI稳定检索】2024年机器学习与神经网络国际学术会议(MLNN 2024)

2024年机器学习与神经网络国际学术会议(MLNN 2024) 2024 International Conference on Machine learning and Neural Networks 2024年4月19-21日 中国-珠海 重要信息 大会官网&#xff1a;www.icmlnn.org(点击投稿/参会/了解会议详情&#xff09; 大会时间&#xff1a;…

一文带你了解红墨水实验!

什么是红墨水实验&#xff1f; 将焊点置于红色墨水或染料中&#xff0c; 让红墨水或染料渗入焊点的裂纹之中&#xff0c;干燥后将焊点强行分离&#xff0c; 焊点一般会从薄弱的环节&#xff08;裂纹处&#xff09;开裂。 因此&#xff0c;红墨水实验可以通过检查开裂处界面的染…