【优选算法篇】2----复写零

ops/2025/1/21 18:42:58/

---------------------------------------begin---------------------------------------

这道算法题相对于移动零,就上了一点点强度咯,不过还是很容易理解的啦~

题目解析:

这道题如果没理解好题目,是很难的,但理解题目就容易啦


讲解算法原理:

意思就是:一个数组长度是固定的,里面的元素,只要是0,就需要在原有的基础上,在0的后面多加一个0,以此类推,不为0的数就得往后移动,最后保持原有的数组长度不变,像上图第一个示例的5和0就是因为前面0要写两个,所以要被去掉~

编写代码:

class Solution 
{
public:void duplicateZeros(vector<int>& arr) {int cur = 0, dest = -1;int n = arr.size();while (cur < n) {if (arr[cur])dest++;elsedest += 2;if (dest >= n - 1)break;cur++;}if (dest == n) {arr[n - 1] = 0;cur--;dest -= 2;}while (cur >= 0) {if (arr[cur]) {arr[dest--] = arr[cur--];} else {arr[dest--] = 0;arr[dest--] = 0;cur--;}}}
};    

我这里实现主要是先遍历一遍数组,如果arr【cur】为非0,则dest走一步,cur++,如果为0,dest则走两步,直到dest到达最后一位,则break,此时cur的位置则为0复写后数组的最后一位数。

注意:在这里需要注意越界问题,如下图:

有一个0越界,直接n-1位置变为0,然后cur--,dest-=2即可!!!

------------------------------------end--------------------------------------------

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=efemb1p0jkd


http://www.ppmy.cn/ops/151975.html

相关文章

20250118 PPT画的论文插图如何导出高分辨率图片:修改电脑注册表

在PowerPoint中导出高分辨率图片的步骤如下&#xff1a; 1. 调整幻灯片尺寸&#xff1a; 打开PowerPoint&#xff0c;点击“设计”选项卡。 在“自定义”区域选择“幻灯片大小”。 选择“自定义幻灯片大小”。 在弹出的对话框中&#xff0c;将幻灯片的尺寸设置为更大的数值&a…

HTML格式

HTML格式也叫网页格式。本以为像我这样的单机爱好者不会用到&#xff0c;但没有想到&#xff0c;两个我喜欢的东西居然也是这个格式的&#xff0c;所以多多少少还是与网页联席会议了。 第一个是EPUB电子书。开始接触EPUB电子书时用的是Calibre这个软件。这个软件没有很清楚地显…

机器人传动力系统介绍

以下是对机器人驱动系统的分析、最新科技应用以及世界顶级公司机器人型号使用的技术&#xff1a; 机器人驱动系统分析 液压驱动&#xff1a;利用液体压力来传递动力&#xff0c;通过液压泵将液压油从油箱抽出&#xff0c;送至液压缸&#xff0c;推动活塞运动&#xff0c;进而…

电池预测 | 第22讲 基于GRU-Attention的锂电池剩余寿命预测

电池预测 | 第22讲 基于GRU-Attention的锂电池剩余寿命预测 目录 电池预测 | 第22讲 基于GRU-Attention的锂电池剩余寿命预测预测效果基本描述程序设计参考资料 预测效果 基本描述 电池预测 | 第22讲 基于GRU-Attention的锂电池剩余寿命预测 锂电池作为现代电子设备的重要动力…

Linux应用编程(五)USB应用开发-libusb库

一、基础知识 1. USB接口是什么&#xff1f; USB接口&#xff08;Universal Serial Bus&#xff09;是一种通用串行总线&#xff0c;广泛使用的接口标准&#xff0c;主要用于连接计算机与外围设备&#xff08;如键盘、鼠标、打印机、存储设备等&#xff09;之间的数据传输和电…

C# OpenCvSharp Yolov8 Face Landmarks 人脸特征检测

目录 介绍 效果 模型信息 项目 代码 下载 介绍 github地址&#xff1a;https://github.com/derronqi/yolov8-face yolov8 face detection with landmark 效果 模型信息 Model Properties description&#xff1a;Ultralytics YOLOv8-lite-t-pose model trained on w…

C语言内存之旅:从静态到动态的跨越

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 引言正文一 动态内存管理的必要性二 动态…

彻底讲清楚 单体架构、集群架构、分布式架构及扩展架构

目录 什么是系统架构 单体架构 介绍 示例图 优点 缺点 集群架构 介绍 示意图 优点 缺点 分布式架构 示意图 优点 缺点 生态扩展 介绍 示意图 优点 缺点 扩展&#xff1a;分布式服务解析 纵切拆服务 全链路追踪能力 循环依赖 全链路日志&#xff08;En…