leetcode刷题之1089: 复写零

news2024/9/29 14:58:23

 题目

解题思路:

 

2)处理边界情况

            

 这种情况越界会发生报错

处理边界情况

 

3)  双指针法   "从后向前" 完成复写操作

                  cur指向 最后一个复写的数 ,     用cur指向的元素复写dest指向元素, 随后cur, dest 均向前移动一位

 

此时cur指向零元素, 需要复写两位, 复写两个元素的dest 前移两位如下

              

移动完dest后 移动cur指针, 进行下一轮循环复写

                    

 继续先后移动dest 指向下标3位置, cur 指向下标2 位置,  执行循环复写操作

         

 上图复写完后继续移动cur dest指针, cur 指向 零元素, 复写两次, 

                   

dest 向前移动位, 再次在自身上复写

                      

  最后均移动至-1 结束

 

 

class Solution {
    public void duplicateZeros(int[] arr) {
        int cur = 0, dest = -1;
        while(cur < arr.length) {
        
            if(arr[cur] == 0) {
                dest++;
            }
            dest++;    
            if(dest >= arr.length-1) {
                break;
            }
            cur++;
        }
        if(dest >= arr.length) {
            arr[arr.length-1] = 0;
            cur--;
            dest-=2;
        }

        while(cur >= 0) {
            if(arr[cur] == 0) {
                arr[dest--] = 0;
                arr[dest--] = 0;
                cur--;
            } else {
                arr[dest--] = arr[cur--];
                
            }
        }
    }
}

 

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

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

相关文章

【Linux】Centos安装 mariadb 并授权远程登陆

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

YOLO入门必备的哪些知识点?

YOLO&#xff08;You Only Look Once&#xff09;是一种基于深度学习的目标检测算法&#xff0c;它具有快速、准确的特点&#xff0c;在计算机视觉领域广受关注。 如果你想入门YOLO&#xff0c;以下是一些必备的知识点&#xff1a; 深度学习基础知识&#xff1a;了解深度学习…

紫外线辐射导致了地球上最大规模的灭绝

为了找到二叠纪末大规模灭绝期间紫外线辐射增强的第一个直接证据&#xff0c;研究人员转向花粉粒中保存的化学证据。 研究人员收集了二叠纪末灭绝事件之前、期间和之后形成的岩石样本。图片来源&#xff1a;刘峰&#xff0c;南京地质古生物研究所 大约 2.52 亿年前&#xff0c;…

常用消息中间件介绍

RocketMQ 阿里开源&#xff0c;阿里参照kafka设计的&#xff0c;Java实现 能够保证严格的消息顺序 提供针对消息的过滤功能 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅机制 亿级消息堆积能力 RabbitMQ Erlang实现&#xff0c;非常重量级&#xff0c;更适…

Streamlit项目:基于讯飞星火认知大模型开发Web智能对话应用

文章目录 1 前言2 API获取3 官方文档的调用代码4 Streamlit 网页的搭建4.1 代码及效果展示4.2 Streamlit相关知识点 5 结语 1 前言 科大讯飞公司于2023年8月15日发布了讯飞认知大模型V2.0&#xff0c;这是一款集跨领域知识和语言理解能力于一体的新一代认知智能大模型。前日&a…

AIGC音视频工具分析和未来创新机会思考

编者按&#xff1a;相较于前两年&#xff0c;2023年音视频行业的使用量增长缓慢&#xff0c;整个音视频行业遇到瓶颈。音视频的行业从业者面临着相互竞争、不得不“卷”的状态。我们需要进行怎样的创新&#xff0c;才能从这种“卷”的状态中脱离出来&#xff1f;LiveVideoStack…

手摸手带你实现一个开箱即用的Node邮件推送服务

目录 ​编辑 前言 准备工作 邮箱配置 代码实现 服务部署 使用效果 题外话 写在最后 相关代码&#xff1a; 前言 由于邮箱账号和手机号的唯一性&#xff0c;通常实现验证码的校验时比较常用的两种方式是手机短信推送和邮箱推送&#xff0c;此外&#xff0c;邮件推送服…

部署问题集合(十九)linux设置Tomcat、Docker,以及使用脚本开机自启(亲测)

前言 因为不想每次启动虚拟机都要手动启动一遍这些东西&#xff0c;所以想要设置成开机自启的状态 设置Tomcat开机自启 创建service文件 vi /etc/systemd/system/tomcat.service添加如下内容&#xff0c;注意修改启动脚本和关闭脚本的地址 [Unit] DescriptionTomcat9068 A…

Nexus(Maven管理器)下载和安装

我们以 Nexus 2.x 为例&#xff0c;演示 Nexus 的安装过程。 官方下载地址 1. 进入 Nexus 2.x 下载页面&#xff0c;根据本机操作系统&#xff0c;选择对应的版本进行下载&#xff0c;如下图所示。 2. 将下载 Nexus 安装包解压到本地磁盘&#xff0c;可获得 nexus-2.14.20-0…

Java字符串

一、所在位置 字符串常量池&#xff1a; 存放字符串的容器 那字符串常量池存在哪呢&#xff1f;根据JDK的版本不同&#xff0c;字符串常量池存放的位置不同。 jdk1.6之前字符串常量池在方法区(想法)中的永久代(具体实现)&#xff08;JVM&#xff1a;新生代、老生代、永久代(永…

三、MySQL 数据库安装集

一、CentOS—YUM 1. MySQL—卸载 # 1、查看存在的MySQL。 rpm -qa | grep -i mysql rpm -qa | grep mysql# 2、删除存在的MySQL。 rpm -e –-nodeps 包名# 3、查找存在的MySQL目录。 find / -name mysql# 4、删除存在的MySQL目录。 rm -rf 目录# 5、删除存在的MySQL配置文件。…

【西安、成都】山洪预警模拟与洪水危险性评价技术及2023年典型地区洪水淹没及损失分析复盘

气候变化背景下&#xff0c;极端天气导致的洪水事件将更加频发。快速城市化对流域下垫面的改变&#xff0c;及人类活动向洪泛区的扩张。二者共同使得全世界多数人类活动高度聚集区的洪水风险增加。洪水淹没危险性&#xff08;各种年遇型洪水淹没&#xff09;是洪水损失评估、风…

mathematica线性代数基础和希腊字母输入

在公式推导的过程中最常使用的就是线性代数&#xff1a; mathematica提供了线性代数的计算模块&#xff0c;不过需要熟悉一下语法&#xff0c;最好的方式就是看文档。 文档的链接 在本地的帮助搜索栏输入howto/DoLinearAlgebra&#xff0c;或者在网页输入链接 How to| 进行线…

老码农的运行时漫谈

写程序离不开运行时&#xff0c;但是有很多伙伴却并没有搞清楚运行时到底是什么。运行时的概念之所以容易被混淆&#xff0c;是因为运行时有两层不同的含义&#xff1a;run time 和 runtime&#xff0c;先贤们在翻译的时候可能忽略了中间的空格&#xff0c;导致运行时一词代表了…

selenium案例之RAM 用户登录 aliyun

文章目录 0x00 Selenium0x01 整体流程 思路1.1 打开浏览器并且访问 登录页面 url: https://signin.aliyun.com/login.htm#/main1.2 定位 "用户名" input 和 "下一步" button 点击下一步1.3 定位 "密码" input 和 "登录" button 点击登…

【C语言】自定义类型:结构体

前言 今天这篇文章&#xff0c;我们来学习自定义类型中的结构体类型 之前我们就初步了解过结构体类型&#xff0c;知道他是用来描述复杂类型的 像之前的short、int、long之类的称为C语言的内置类型 而如结构体、枚举、联合类型称为自定义类型 初识结构体 在正式学习前&…

Postgres入门:三种免费且简单的方法

大家好&#xff0c;开发者们&#xff01;今年大约有9万人参与了Stack Overflow的调查。令人印象深刻的是&#xff0c;Postgres被评为第一数据库。此外&#xff0c;DB Engines还将PostgreSQL列为全球增长最快的数据库之一。这对我们意味着什么呢&#xff1f;很明显&#xff0c;我…

数学思维导图怎么画?别错过这几简单绘制方法

数学思维导图怎么画&#xff1f;数学思维导图可以帮助我们更好地组织和理解各种数学概念。不仅是学生和教师可以受益&#xff0c;数学思维导图也可以在研究和工作中发挥作用。这种工具可以帮助你清晰地表示各种数学概念和关系&#xff0c;并将它们可视化&#xff0c;以便更容易…

LeetCode.双指针(三)

例题一 一、题目 两数之和 II - 输入有序数组 给你一个下标从 1 开始的整数数组 numbers &#xff0c;该数组已按 非递减顺序排列 &#xff0c;请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] &#xf…

思维导图怎么制作?了解一下这几种制作方法

思维导图怎么制作&#xff1f;思维导图是一种非常有效的组织思考和表达想法的工具。它可以帮助人们更好地理解和记忆信息&#xff0c;并且可以通过可视化的方式帮助人们更好地理解复杂的关系和概念。制作思维导图有多种方法&#xff0c;例如手绘、使用电子表格或专业的思维导图…