优先算法 —— 双指针系列 - 移动零

1. 移动零

题目链接:

283. 移动零 - 力扣(LeetCode)icon-default.png?t=O83Ahttps://leetcode.cn/problems/move-zeroes/description/


2. 算法原理 

其实像移动零这种类型的题目都有一个名字叫做数组划分(数组分块),就是说先给一个数组,然后再制定一个标准/规则,在这个标准/规则下将这个数组划分为诺干个区间

  

而在我们移动零这道题目里面就是先给一个数组,然后根据规则划分为两个区间

  

  

而解决这种类型的题目我们一般就是使用双指针算法来解决,在数组中,我们是利用数组的下标来充当指针的

  

 我们先定义两个指针:dest:目的地        cur:当前的

  

两个指针的作用
dest在已经处理的区间内,非0元素的最后一个位置
cur从左往右遍历数组

  

那么我们就会划分为三个区间:

[0,dest]表示已经处理过的区间,表示非0元素
[dest+1,cur-1]全部都是0
[cur,n-1]待处理的元素

  

当cur指针到达n位置的时候时候,那就说明cur已经从左往右把数组遍历一遍,那么我们这个区间就已经划分好了  

  

当cur指针到达n位置的时候时候,那么待处理的区间就已经不存在了,然后整个区间就只剩下非0元素区间和0元素区间两个部分,就变成了我们上面所说的数组划分(数组分块)模式

  

  让cur为0,dest为-1

  

  

  


3. 代码

class Solution {
public:void moveZeroes(vector<int>& nums) {//这里cur++就不需要写遇到0元素cur++的情况了for(int dest=-1,cur=0;cur<nums.size();cur++)if(nums[cur])//如果cur遇到的是非0元素则交换//这里dest前置++可以直接将dest后面的一个元素直接交换swap(nums[++dest],nums[cur]);//因为for循环已经++,所以这里的cur不用++}
};

始源🎶

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

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

相关文章

C语言——数组逐元素操作练习

定义一个能容纳10个元素的整形数组a&#xff0c;从键盘读取9个整数存放到前9个数组元素中。 一. 从键盘读取一个整数n和位置p(0<p<8)&#xff0c;插入n到数组a中&#xff0c;插入位置&#xff1a;下标p。要求插入点及后续的数组元素都要后移动。 代码如下&#xff1a; …

对抗样本存在的原因

对抗样本存在的原因与深度学习模型的结构和训练机制密切相关&#xff0c;主要包括以下几个方面&#xff1a; 1. 模型的高维性和线性化行为 高维性&#xff1a;深度学习模型通常在高维空间中运行&#xff0c;而高维空间中的数据分布非常稀疏。微小的扰动在高维空间可能被放大&a…

【ArcGISPro】根据yaml构建原始Pro的conda环境

使用场景 我们不小心把原始arcgispro-py3的conda环境破坏了,我们就可以使用以下方法进行修复 查找文件 在arcgis目录下找到yaml文件 如果没找到请复制以下内容到新的yaml文件 channels: - esri - defaults dependencies: - anyio=4.2.0=py311haa95532_0 - appdirs=1.4.4=p…

Java将PDF保存为图片

将 PDF 文件转换为图片是常见的需求之一&#xff0c;特别是在需要将 PDF 内容以图像形式展示或处理时。其中最常用的是 Apache PDFBox。 使用 Apache PDFBox Apache PDFBox 是一个开源的 Java 库&#xff0c;可以用来处理 PDF 文档。它提供了将 PDF 页面转换为图像的功能。 …

解决IDEA报包不存在,但实际存在的问题

前言 最近在把一个亿老项目交割给同事&#xff0c;同事在导入项目运行时遇到IDEA报包不存在&#xff0c;但实际存在的问题&#xff0c;最终通过以下方式解决 现象 在IDEA里启动运行项目&#xff0c;报某个类有问题&#xff0c;引入的包不存在。 点击这个引入的包&#xff0c;可…

Benchmark是什么?有什么作用?实例——助理解

benchmark 1、概念2、实例&#xff1a;2.1 背景&#xff1a;2.2 示例&#xff1a;GLUE Benchmark2.3 模型与 Benchmark 的关系 3、总结 1、概念 在论文中&#xff0c;benchmark 通常是指用于评估模型性能的标准化测试集合或基准工具。它通过提供一组统一的数据集和任务&#x…

debian 如何进入root

debian root默认密码, 在Debian系统中&#xff0c;安装完成后&#xff0c;默认情况下root账户是没有密码的。 你可以通过以下步骤来设置或更改root密码&#xff1a; 1.打开终端。 2.输入 sudo passwd root 命令。 3.当提示输入新的root密码时&#xff0c;输入你想要的密码…

使用uniapp编写APP的文件上传

使用uniapp插件文件选择、文件上传组件&#xff08;图片&#xff0c;视频&#xff0c;文件等&#xff09; - DCloud 插件市场 实用效果&#xff1a; 缺陷是只能一个一个单独上传

图算法 | 3、图分析与数据科学

图分析(Graph Analytics)在本质上是对图数据的处理与分析&#xff0c;其过程可以概括为图计算。 而图计算的范畴不仅包含数据的计算或分析&#xff0c;还包含元数据管理、模式管理、数据建模、数据清洗、转换、加载、治理、图分析与计算等一系列操作。 或许我们用大数据生命周…

66 mysql 的 表自增长锁

前言 mysql 的表锁之 AUTO_INC, 是我们自增长的时候做并发控制的锁 主要是用于 自增长生成新的 id 的时候的控制 在前面的文档中, 我们又看到 mysql 这边自增长的处理的相关的大概脉络 但是 对于一些 并发控制的细节, 我们当时 应该是直接忽略掉了 我们这里就来看一下…

GameFi的前景:游戏与金融的未来交汇点

随着区块链技术的迅速发展&#xff0c;GameFi&#xff08;游戏金融&#xff09;作为一种新兴的商业模式&#xff0c;正在重新定义游戏行业的未来。GameFi将游戏与去中心化金融&#xff08;DeFi&#xff09;结合&#xff0c;创造出一种全新的经济生态&#xff0c;吸引了大量玩家…

Vue 3 中 onUnload 和 onPageScroll 使用详解

Vue 3 中 onUnload 和 onPageScroll 使用详解 在 Vue 3 中&#xff0c;当我们开发微信小程序时&#xff0c;通常需要处理页面生命周期事件和页面滚动事件&#xff0c;比如页面卸载 (onUnload) 和页面滚动 (onPageScroll) 等。这些功能对优化用户体验、实现动态效果以及处理页面…

Unity 使用 Excel 进行配置管理(读Excel配置表、Excel转保存Txt 文本、读取保存的 Txt 文本配置内容)

Unity 使用 Excel 进行配置管理(读Excel配置表、Excel转保存Txt 文本、读取保存的 Txt 文本配置内容) 目录 Unity 使用 Excel 进行配置管理(读Excel配置表、Excel转保存Txt 文本、读取保存的 Txt 文本配置内容) 一、简单介绍 二、实现原理 三、注意事项 四、案例简单步…

Elasticsearch向量搜索:从语义搜索到图搜图只有一步之遥

续 上集说到语义搜索&#xff0c;这集接着玩一下图搜图&#xff0c;这种场景在电商中很常见——拍照搜商品。图搜图实现非常类似语义搜索&#xff0c;代码逻辑结构都很类似… 开搞 还是老地方modelscope找个Vision Transformer模型&#xff0c;这里选用vit-base-patch16-224…

HCIA笔记3--TCP-UDP-交换机工作原理

1. tcp协议 可靠的连接 1.1 报文格式 1.2 三次握手 1.3 四次挥手 为什么TIME_WAIT需要2MSL的等待时间&#xff1f; &#xff08;a&#xff09; 为了实现可靠的关闭 &#xff08;b&#xff09;为了让过期的报文在网络上消失 对于(a), 假设host发给server的last ack丢了。 ser…

docker搭建私有仓库,实现镜像的推送和拉取

1.拉取docker仓库镜像 docker pull registry 2.启动registry容器 docker run -d registry 3.查看当前仓库中存在的镜像&#xff08;一&#xff09; curl -XGET http://192.168.111.162: 5000/v2/_catalog 192.168.111.162 部署docker仓库宿主机的ip 5000 部署docker仓库映射到宿…

提取图片高频信息

提取图片高频信息 示例-输入&#xff1a; 示例-输出&#xff1a; 代码实现&#xff1a; import cv2 import numpy as npdef edge_calc(image):src cv2.GaussianBlur(image, (3, 3), 0)ddepth cv2.CV_16Sgray cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)grad_x cv2.Scharr(g…

kali安装过程中会遇到的问题和解决方法

在安装Kali Linux过程中&#xff0c;我们可能会遇到一些常见问题&#xff0c;这些问题及其解决方法如下&#xff1a; 1. 安装过程中卡住或停滞 问题描述: 安装过程卡在某一步&#xff0c;常见的如“Detecting hardware”或“Installing packages”阶段。 解决方法: 检查安装…

greater<>() 、less<>()及运算符 < 重载在排序和堆中的使用

简略图 greater<>()(a, b) a > b 返回true&#xff0c;反之返回false less<>()(a, b) a < b 返回true&#xff0c;反之返回false 在cmp中使用&#xff08;正着理解&#xff09; 规则返回true时a在前&#xff0c;反之b在前 在priority_queue中使用 &#xff…

助力企业解决降本增效的难题,Altair HPCWorks新功能创新升级

“IO一旦出现问题&#xff0c;整个计算效率会降低50%以上。License、昂贵的硬件、紧张的项目周期都会因此而卡顿&#xff0c;而HPCWorks可以帮助包括像英伟达这样的顶尖客户随时了解研发资源的实时情况和实时瓶颈。 —— Altair 企业计算部技术总监 王轶华 在2024年 Altair 技…