算法:2.复写零

双指针

1089. 复写零 - 力扣(LeetCode)

解法思路:如图

虽然得到了正确答案,但从5下标开始复写是我们知道答案后看出来的。

但是我们从这知道只要能找到最后一个需要复写的数的下标就行了,因此我们构思出一个这样的代码:

cur和dest从0下标开始从前往后遍历原数组,只要cur遇到0,dest就向前移动2次,否则移动一次,直到dest>=nums.length-1就退出循环(注意,需要判断,如果dest==nums.length,dest=nums.length-1),这时cur也到达最后需要复写的下标。

cur和dest 位置均正确之后复写零问题思路也就结束了

代码实现:

java 复制代码
public void duplicateZeros(int[] arr) {
        int cur=0;
        int dest=-1;
        while(dest<arr.length-1){ //找位置
            if(arr[cur]==0){
                dest+=2;
            }else{
                dest+=1;
            }
            if(dest>=arr.length-1) break;
            cur++;
        }

        while(cur>=0){
            if(dest==arr.length){
                arr[dest-1]=0;
                dest-=2;
            }
            else{
                if(dest>0){
                    if(arr[cur]==0){
                        arr[dest]=0;
                        arr[dest-1]=0;
                        dest-=2;
                    }else{
                        arr[dest]=arr[cur];
                        dest-=1;
                    }
                }
            }
            cur--;
        }
    }
相关推荐
量化分析码农1 小时前
股票历史数据的复权参数对照:多级别返回的字段与数值差异
java·javascript·后端
猫猫不是喵喵.1 小时前
从0到1创建一个微服务项目
java·数据库·微服务·1024程序员节
瑞雪兆丰年兮2 小时前
JavaWeb-day13-SpringBootWeb事务管理&AOP
java·开发语言·springboot·javaweb·事务·web·aop
曲径海盗2 小时前
Try-Except怎么用,3个追问解答在自动化下的应用
java·jvm·oracle
Cosolar3 小时前
极简智库:快速搭建你的开源项目教程阅读平台,让 docs/ 目录被更多人看见
java·架构·github
nice_lcj5203 小时前
【从零理解 Spring AI · 16】Agent 与工作流:什么该写死,什么该让模型决定
java·人工智能·后端·spring ai·ai应用开发
北京云帆互联科技3 小时前
云帆培训考试系统更新说明:v9.3.0
java·学习
通信小呆呆4 小时前
电子战抗干扰技术:当“不被干扰”成为一种系统
算法·通信·mimo·isac
笑容掩饰我的失落4 小时前
区块链从小白到精通(八):从零实现一个标准 ERC-20 代币(完整可运行代码)
算法·区块链·php·智能合约·哈希算法
学长毕设5 小时前
基于SpringBoot的景点管理系统-附源码
java·spring boot·后端