【优选算法】1089.复写零

 链接🔗:1089. 复写零 - 力扣(LeetCode)

一,题目解析 

要点均用红框圈起来了,特别注意 不要超过数组长度!!!

二,算法原理

通过双指针算法来实现

主要步骤如下:

1.先找到最后一个“复写”的数

        ①判断cur的位置的值

        ②dest移动一步或者两步

        ③判断dest是否结束(终止操作)

        ④cur++

2.处理边界情况

例如这种

复写最后一个零时数组长度不够了属于越界访问

我给出的处理办法是:n-1=0;cur--;dest-=2;

3.“从后向前”完成“复写” 

如果是从前向后则会覆盖掉一些值

三,编写代码

class Solution {
    public void duplicateZeros(int[] arr) {
        int cur = 0,dest = -1,n = arr.length;
        //先找到最后一个“复写”的数
        while(cur<n){
            if(arr[cur] == 0) dest += 2;
            else dest += 1;
            if(dest >= n-1) break;
            cur++;
        }
        //处理边界情况
        if(dest == n){//已经越界
            arr[n-1]=0;
            cur--; dest -=2;
            }
        //从后向前完成“复写”
        while(cur >= 0){
            if(arr[cur] != 0)
            arr[dest--]=arr[cur--];
            else{//需要抄写两遍,且让dest向前移动两步
                arr[dest--]=0;
                arr[dest--]=0;
                cur--;
                }
                    
            }
        }
    }
        

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

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

相关文章

什么是web组态?一文读懂web组态

随着工业4.0的到来&#xff0c;物联网、大数据、人工智能等技术的融合应用&#xff0c;使得工业领域正在经历一场深刻的变革。在这个过程中&#xff0c;web组态技术以其独特的优势&#xff0c;正在逐渐受到越来越多企业的关注和认可。那么&#xff0c;什么是web组态&#xff1f…

BearPi Std 板从入门到放弃 - 先天篇(1)(阶段 : 智慧城市 - 智慧路灯)

简介 对前面几篇整合, 做个小小汇总试验, 使用BearPi E53_SC1扩展板主芯片: STM32L431RCT6串口: Usart1扩展板与主板连接: I2C : I2C1 (光照强度传感器&#xff1a;BH1750)LED: PB9步骤 创建项目 参考 BearPi Std 板从入门到放弃 - 引气入体篇&#xff08;1&#xff09;(由零创…

PTA校赛算法题十道java、C++详解

目录 7-1 专1 签到 7-2 专2 令人眼花缭乱的字符串 7-3 专3 VALORANT 7-4 专4 吃蛋糕 7-5 专5 Game 7-6 专6 二进制回文串 7-7 专7 度假 7-8 专8 括号匹配Plus 7-9 专9 生成最少叶子树 7-10 专10 禁止超速 这篇文章是基于我们前不久的校赛写的&#xff0c;校赛给的…

Linux 删除文件名乱码的文件

现象&#xff1a; 处理&#xff1a; 1.>ls -li 获取文件对应的ID号 2.把删除指定文件&#xff08;ID号 &#xff09;执行&#xff1a; find ./ -inum 268648910 -exec rm {} \;

TrustZone之数据、指令和统一缓存(unified caches)

在Arm架构中,data caches是物理标记(physically tagged)的。物理地址包括该行来自哪个地址空间,如下所示: 对于NP:0x800000的缓存查找永远不会命中使用SP:0x800000标记的缓存行。这是因为NP:0x800000和SP:0x800000是不同的地址。 这也影响缓存维护操作。考虑前面图表中的示…

安装@uni-helper/uni-app-types之后模板代码报错

安装uni-helper/uni-app-types之后模板代码一大片红 之后在https://uni-helper.js.org/uni-app-types找到了答案 配置tsconfig.json 添加vueCompilerOptions这个配置后&#xff0c;报错不见了 "vueCompilerOptions": {"nativeTags": ["block"…

【linux】查看CPU和内存信息

之前咱们一起学习了查看内存的和CPU的命令。 ​mpstat &#xff1a; 【linux】 mpstat 使用 uptime&#xff1a;【Linux】 uptime命令使用 CPU的使用率&#xff1a;【linux】查看CPU的使用率 nmon &#xff1a;【linux】nmon 工具使用 htop &#xff1a;【linux】htop 命令…

算法备胎hash和队列的特征——第五关青铜挑战

内容1.Hash存储方式2.Hash处理冲突的方式3.队列存储的基本特征4.如何使用链表来实现栈 1.Hash 基础 1.1Hash的概念和基本特征 哈希&#xff08;Hash&#xff09;也称为散列&#xff0c;就是把任意长度的输入&#xff0c;通过散列算法&#xff0c;变换成固定长度的输出&#…

排序算法---冒泡排序

1. 原理 对数组进行遍历&#xff0c;每次对相邻的两个元素进行比较&#xff0c;如果大的在前面&#xff0c;则交换两个元素的位置&#xff0c;完成一趟遍历后&#xff0c;数组中最大的数值到了数组的末尾。再对前面n-1个数值进行相同的遍历。一共完成n-1趟遍历就实现了排序。 1…

2023年终总结-轻舟已过万重山

自我介绍 高考大省的读书人 白&#xff0c;陇西布衣&#xff0c;流落楚、汉。-与韩荆州书 我来自孔孟故里山东济宁&#xff0c;也许是小学时的某一天&#xff0c;我第一次接触到了电脑&#xff0c;从此对它产生了强烈的兴趣&#xff0c;高中我有一个愿望&#xff1a;成为一名计…

初出茅庐的小李博客之TobudOS移植到EVB_AIoT开发板

本博客参考教程&#xff1a; https://atomgit.com/OpenAtomFoundation/TobudOS/blob/master/doc/TobudOS_EVB_AIoT_STM32_Guide.md 介绍一下EVB_AIoT开发板 这个开发板是由TobudOS开源社区联合意法半导体、南京厚德物联网设计的一款高性能IoT开发平台&#xff0c;主控芯片是S…

Spring Boot 3 整合 Mybatis-Plus 实现动态数据源切换实战

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

东北大学Python

目前金属矿开采&#xff0c;爆破还是主要的破岩方式&#xff0c;为了保证巷道采场的安全&#xff0c;需要对爆破震动进行监测&#xff0c;获取的监测数据如附件&#xff0c;第1列数据为震动的序号&#xff0c;第2、3、4列为x,y,z三个方向的震动速度&#xff0c;往往由于各种因素…

智能优化算法应用:基于人工兔算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于人工兔算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于人工兔算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.人工兔算法4.实验参数设定5.算法结果6.参考文献7.…

Spring Cloud Gateway 网关的基础使用

1. 什么是网关&#xff1f;网关有什么用&#xff1f; 在微服务架构中&#xff0c;网关就是一个提供统一访问地址的组件&#xff0c;它解决了内部微服务与外部的交互问题。网关主要负责流量的路由和转发&#xff0c;将外部请求引到对应的微服务实例上。同时提供身份认证、授权、…

吴恩达最新短课,知识很硬核,附中英字幕

吴恩达最新短课&#xff0c;知识很硬核&#xff0c;附中英字幕 简介 大家好我是老章&#xff0c;吴恩达老师忠实粉丝 之前刷过他的很多课程&#xff1a; 吴恩达新课&#xff0c;1.25倍速刷完了 给吴恩达的最新短课加了中英文字幕 最近吴老师又限时免费开放了一个短课&…

ambari 开启hdfs回收站机制

hdfs回收站类似于我们常用的windows中的回收站&#xff0c;被删除的文件会被暂时存储于此&#xff0c;和回收站相关的参数有两个&#xff1a; fs.trash.interval&#xff1a;默认值为0 代表禁用回收站&#xff0c;其他值为回收站保存文件时间&#xff0c;单位为分钟 fs.trash…

[足式机器人]Part2 Dr. CAN学习笔记-自动控制原理Ch1-1开环系统与闭环系统Open/Closed Loop System

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-自动控制原理Ch1-1开环系统与闭环系统Open/Closed Loop System EG1: 烧水与控温水壶EG2: 蓄水与最终水位闭环控制系统 EG1: 烧水与控温水壶 EG2: 蓄水与最终水位 h ˙ q i n A − g h A R \dot{…

javacv踩坑记录

前一阵学习opencv&#xff0c;发现在做人脸识别的时候遇到一些类库不存在的情况&#xff0c;查找后发现是由于拓展包没有安装完全&#xff08;仅安装了基础版&#xff09;。由于网络的问题&#xff08;初步猜测&#xff09;&#xff0c;始终无法安装好拓展包。 于是另辟蹊径&am…

go sort.Search()

函数 func Search(n int, f func(int) bool) int {} 函数作用 通过二分法查找&#xff0c;找到已经排序好的数组[0,n)中第一个使f为true的索引&#xff0c;如果没有找到返回n 为什么要用二分查找&#xff1f; 因为二分查找相比普通依次遍历而言&#xff0c;速度能有巨幅提升…