模块一:双指针——1089.复写零

文章目录

  • 题目解析
  • 算法原理
    • 异地
    • 原地
  • 代码实现

题目解析

题目链接:1089.复写零
在这里插入图片描述
这题的暴力解法还是很简单的,不过这道题因为加了两个限制之后,多了一些细节需要去处理。我们通过一个例子来讲解这道题目:
在这里插入图片描述
在这个示例中,我们将第一个0都复写了一遍之后,将2和3都右移了一位,然后再复写了一个0,最后将4右移即完成复写,数组长度依然为8,且没有额外开空间,注意这个函数是不需要返回值的。

算法原理

异地

像这种在数组中操作数组元素的这类题目,我们一般也是用双指针算法来解决的,但是我们的双指针算法并不是凭空来的,而是先根据“异地操作”,然后优化成双指针下的“就地”操作
在这里插入图片描述
首先我们先不管题目,再定义一个数组,让cur遍历原数组,遇到非0元素就抄下来,遇到0元素就抄两遍,抄完之后,cur++,dest++,直到cur==n完成复写。

原地

首先在原地的操作中我们要是从前往后复写,则会覆盖,所以我们从后往前复写。(PS:这里我们需要寻找逆向复写的位置以及注意边界问题)
在这里插入图片描述
在这里插入图片描述

代码实现

class Solution {
public:
    void duplicateZeros(vector<int>& arr) {
        int cur = 0,dest = -1,n = arr.size();
        //寻找逆向复写的位置
        while(cur < n)
        {
            if(arr[cur]) dest++;
            else dest += 2;
            if(dest >= n-1) break;
            cur++;
        }

        //处理边界问题
        if(dest == n)
        {
            arr[n - 1] = 0;
            dest -= 2;
            --cur;
        }

        //从后向前完成复写
        while(cur >= 0)
        {
            if(arr[cur])
            {
                arr[dest--] = arr[cur--];
            }
            else
            {
                arr[dest--] = 0;
                arr[dest--] = 0;
                --cur;
            }
        }
    }
};

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

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

相关文章

Python----多态

1、什么是多态 多态指的是一类事物有多种形态。 定义&#xff1a;多态是一种使用对象的方式&#xff0c;子类重写父类方法&#xff0c;调用不同子类对象的相同父类方法&#xff0c;可以产生不同的执行结果。 ① 多态依赖继承 ② 子类方法必须要重写父类方法 首先定义一个父类…

NumPy学习:NumPy(Numerical Python)基础(一)

1.什么是NumPy NumPy 是 Python 中用于科学计算的基础包。 它是一个 Python 库&#xff0c;提供多维数组对象&#xff0c; 各种派生对象&#xff08;例如掩码数组和矩阵&#xff09;&#xff0c;以及 用于对阵列进行快速操作的各种例程&#xff0c;包括 数学、逻辑、形状操作、…

CTF-misc(1)图片隐写

笔记目录 渗透测试工具(1)wireshark渗透测试工具(2)Nmap渗透测试工具(3)BurpsuiteAWD比赛(1)AWD入门攻略大纲CTF-Web(2)SQL注入CTF-Web(3)文件上传漏洞 图片隐写目录 (1)GIf和二维码隐写 二维码补全 二维码绘图 Gif规律分析 (2)文本附加图片隐写 (3)IHDR文件头修复图片宽高 (…

【深度学习】强化学习(一)强化学习定义

文章目录 一、强化学习问题1、交互的对象1. 智能体&#xff08;Agent&#xff09;2. 环境&#xff08;Environment&#xff09; 2、强化学习的基本要素1. 状态 &#x1d460;2. 动作 &#x1d44e;3. 策略 &#x1d70b;(&#x1d44e;|&#x1d460;)4. 状态转移概率 &#x1…

深度学习训练过程自查:为什么我的模型不收敛/表现不佳?

代码终于写完了&#xff0c;bug 处理好了&#xff0c;终于跑起来了。但是模型不收敛。或者收敛了&#xff0c;但是加 trick 也表现不良。看着这个精心编写的辣鸡模型&#xff0c;从内心深处生出一股恨铁不成钢的悲愤。 于是开始思考&#xff0c;为什么&#xff1f;哪里出了问题…

上海亚商投顾:沪指探底回升微跌 AI概念股全线反弹

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 大指数早间震荡调整&#xff0c;午后探底回升集体翻红&#xff0c;临近尾盘又小幅走弱。AI概念股全线反弹&…

2024年值得关注的8个未来数据库

2024年值得关注的8个未来数据库 关系型数据库管理系统在数据库技术领域占据主导地位已经多年了。当SQL在1970年代首次出现时&#xff0c;关系型数据库管理系统的使用和受欢迎程度迅速提升。很快&#xff0c;MySQL成为了大多数公司和团队首选的数据库。 然而&#xff0c;2023年…

2023下软件设计师备考分享(机考改革)

目录 一、机考最大的感受&#xff08;⭐⭐⭐&#xff09; 1、个人情况说明 2、试卷难易程度 3、机考作答情况 4、考场内部情况 二、学习备考方案&#xff08;⭐⭐⭐&#xff09; 1、大纲要求 2、b站up主zst 3、准备工作 4、复习计划 三、软件设计师笔记&#xff08;…

VS2015编译GDAL3.2.0+opencl+C#

参考借鉴https://www.cnblogs.com/litou/p/15004877.html 参考借鉴https://www.cnblogs.com/xiaowangba/p/6313903.html 参考借鉴gdal、proj、geos、sqlite等在VS2015下编译和配置_vs2015编译sqlite3-CSDN博客 参考借鉴Windows下GDAL3.1.2编译 (VS2015)_gdal windows编译-CS…

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之设备管理》(28)

《Linux操作系统原理分析之设备管理》&#xff08;28&#xff09; 9 设备管理9.1 设备与设备管理9.1.1 设备的分类 9.2 I/O 控制方式9.2.1CPU 控制方式9.2.2 通道控制方式 9.3 缓冲技术9.3.1 缓冲技术的引进9.3.2 缓冲的种类 9.4 设备的分配9.4.1 设备管理的数据结构9.4.2 设备…

SQL Server——权限管理

一。SQL Server的安全机制 SQL Server 的安全性是建立在认证和访问许可两种安全机制之上的。其中&#xff0e;认证用来确定登录Sal Server 的用户的登录账户和密码是否正确&#xff0e;以此来验证其是否具有连接SQL Server 的权限;访问许可用来授予用户或组能够在数据库中执行哪…

火狐,要完了!

在过去几年中&#xff0c;关于Firefox 浏览器的衰落有过不少讨论。目前来说&#xff0c;很多公共的以及私营的大型网站都缺乏对Firefox的适当支持。但是Firefox也多次试图“自救”&#xff0c;甚至就在不久前&#xff0c;Mozilla 通过官博发文&#xff0c;表示 Firefox 在 2023…

ODrive移植keil(九)—— 抗齿槽效应算法

目录 一、齿槽效应1.1、齿槽效应的定义1.2、产生原因1.3、解决办法 二、硬件接线三、ODrive官方代码操作3.1、固件版本v0.5.13.2、抗齿槽校准原理3.3、校准注意事项3.4、校准操作 四、移植后的代码操作五、总结 ODrive、VESC和SimpleFOC 教程链接汇总&#xff1a;请点击   一、…

网络安全行业大模型调研总结

随着人工智能技术的发展&#xff0c;安全行业大模型SecLLM&#xff08;security Large Language Model&#xff09;应运而生&#xff0c;可应用于代码漏洞挖掘、安全智能问答、多源情报整合、勒索情报挖掘、安全评估、安全事件研判等场景。 参考&#xff1a; 1、安全行业大模…

【Java 基础】24 日期操作

文章目录 1.Date2.LocalDate3.LocalTime4.LocalDateTime5.DateTimeFormatter6.Period7.Duration8.ZoneId9.ZonedDateTime总结 日期和时间是我们常见的操作对象&#xff0c;Java 也提供了强大的日期和时间处理类库&#xff0c;使我们可以方便的进行日期的表示、计算、格式化等。…

SQL Server数据库的备份和还原

6.2 SQL Server备份和还原 数据库管理员最担心的情况就是数据库瘫痪&#xff0c;造成数据丢失&#xff0c;而备份作为数据的副本&#xff0c;可以有 效地保护和恢复数据。本节将介绍数据备份的原因&#xff0c;备份的方式.SOL Server的恢复模式.以及备 份策略和备份设备。 6.2…

思维模型 色彩心理效应

本系列文章 主要是 分享 思维模型&#xff0c;涉及各个领域&#xff0c;重在提升认知色彩影响情绪。 1 色彩心理效应的应用 1.1 色彩心理效应在营销中的应用 1 可口可乐公司的“红色”营销 可口可乐公司是全球最著名的饮料品牌之一&#xff0c;其标志性的红色包装已经成为了…

嵌入式_基于STM32F4标准库的Flash读写操作

嵌入式_基于STM32F4标准库的Flash读写操作 文章目录 嵌入式_基于STM32F4标准库的Flash读写操作前言一、STM32F4的 Flash 简介二、闪存的读写操作1.闪存的读取2.闪存的解锁、擦除和写入1.闪存解锁2.闪存擦除3.闪存写入 三、完整代码 前言 在STM32芯片内有一个Flash存储器断电后…

整数二分的建模

当题目能够使用整数二分法建模时&#xff0c;主要有整数二分法思想进行判定&#xff0c;它的基本形式如下&#xff1a; while(left < right) {int ans;//记录答案 int mid left (right - left) / 2;//二分if(check(mid)){//检查条件&#xff0c;如果成立 ans mid;//记录…

学习spring、springmvc、mybatis、ssm所有可能用到的依赖总结,父工程pom文件依赖,<packaging>pom</packaging>

1、父工程pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/PO…