02复写零

news2024/11/27 14:51:00

复写零
在这里插入图片描述
我们先进行异地复写:代码如下

public class Test {
    public static void main(String[] args) {
        int []array ={1,0,2,3,0,4};
        duplicateZeros(array);
    }
    public static void  duplicateZeros(int[] arr) {
        int [] elem=new int[arr.length];
        for(int cur=0,dest=0;dest<arr.length;cur++) {
            if(arr[cur]!=0) {
                elem[dest]=arr[cur];
                dest++;
            } else{
                elem[dest]=arr[cur];
                dest++;
                if(dest>=arr.length) {
                    break;
                }//防止dest越界
                elem[dest]=arr[cur];
                dest++;
            }
        }
        System.out.println(Arrays.toString(elem));
    }
}

在这里插入图片描述
我们尝试在一个数组上面从左向右边复写,这样会把一个数覆盖住,从而导致连环错误。

我们现在试试从右向左复写。
在这里插入图片描述
我们发现从右向左的方式可以解决这个问题。
但是我们现在出现了新的问题,如何找cur位置和dest位置。
在这里插入图片描述
但是要注意有一种特殊情况
在这里插入图片描述
这种情况dest越界,我们要处理一下
在这里插入图片描述
我写的:

public static void duplicateZeros(int[] arr) {
        int cur=-1;
        int dest=-1;
        for(;dest<arr.length-1;) {
            cur++;
            if(arr[cur]==0) {
                dest+=2;
            } else {
                dest++;
            }
            if(dest>=arr.length) {
                dest--;
                arr[dest]=arr[cur];
                dest--;
                cur--;
                break;
            }

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

官方标准写的:

    class Solution
    {
        public void duplicateZeros(int[] arr)
        {
            int cur = 0, dest = -1, n = arr.length;
            // 1. 先找到最后⼀个需要复写的数
            while(cur < n)
            {
                if(arr[cur] == 0) dest += 2;
                else dest += 1;
                if(dest >= n - 1) break;
                cur++;
            }
            // 2. 处理⼀下边界情况
            if(dest == n)
            {
                arr[n - 1] = 0;
                cur--; dest -= 2;
            }
            // 3. 从后向前完成复写操作
            while(cur >= 0)
            {
                if(arr[cur] != 0) arr[dest--] = arr[cur--];
                else
                {
                    arr[dest--] = 0;
                    arr[dest--] = 0;
                    cur--;
                }
            }
        }
    }

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

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

相关文章

鼠标市场洞察:数据分析揭示消费趋势!

鼠标整体数据分析 一. 概述 本报告基于从淘宝商品搜索接口和淘宝精确月销量接口中提取的数据&#xff0c;分析了前百个品牌在销售额上的占比情况。分析涵盖了销售额和占比的数据&#xff0c;为决策提供了依据。(以上两个接口有需求的可以找我要链接&#xff09; 1. 大盘整体…

linux 安装gitlab

安装环境 CentOS 7.7 (centos6.10会报错)2g内存防火墙关闭 安装步骤&#xff1a; 1 安装gitlab # yum install -y git curl policycoreutils-python openssh-server # 安装依赖 # wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.2.2-ce…

Lucene 倒排索引

倒排索引是什么&#xff1f; 【定义】倒排索引&#xff08;Inverted Index&#xff09;是一种用于信息检索的数据结构&#xff0c;尤其适用于文本搜索。它与传统索引的主要区别在于&#xff0c;传统索引是根据文档来查找词语的位置&#xff0c;而倒排索引则是根据词语来查找文…

【云从】三、计算机网络基础

文章目录 1、网络2、网络通信2.1 IP地址2.2 子网掩码2.3 网关2.4 私有地址和公有地址2.5 NAT网络地址转换 3、网络架构及设备 1、网络 网络&#xff0c;即通过通信线路&#xff08;如光纤、网线&#xff09;和通信设备&#xff08;如路由器、光猫&#xff09;&#xff0c;将各…

切换按钮组动画效果

<!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>按钮切换动画</title><style>body {disp…

【隐私计算】隐语HEU同态加密算法解读

HEU: 一个高性能的同态加密算法库&#xff0c;提供了多种 PHE 算法&#xff0c; 包括ZPaillier、FPaillier、IPCL、Damgard Jurik、DGK、OU、EC ElGamal 以及基于FPGA和GPU硬件加速版本的Paillier版本。 本文我们会基于GPU运行HEU Docker容器&#xff0c;编译打包GPaillier并测…

C++常用库函数

大小写转换 islower/isupper函数 用于检查一个字符是否为小写或大小字母&#xff0c;需要包含头文件< cctype >,也可以包含万能头文件< bits/stdc.h >.函数返回值类型为bool类型。 int main() {char ch1 A;char ch2 b;//使用islower函数判断是否为小写字母if …

springboot+react实现移动端相册(上传图片到oss/ 批量删除/ 查看图片详情等功能)

相册页面及功能展示&#xff1a; react前端结构及代码&#xff1a; Java后端结构及代码 数据库结构&#xff1a; photo&#xff1a; user 这是首个利用AI自有知识构建的简易相册系统&#xff0c;项目是react构造前端spring boot构造后端。 前端有四个主要页面&#xff1…

深入理解Transformer的笔记记录(精简版本)NNLM → Word2Vec

文章的整体介绍顺序为: NNLM → Word2Vec → Seq2Seq → Seq2Seq with Attention → Transformer → Elmo → GPT → BERT 自然语言处理相关任务中要将自然语言交给机器学习中的算法来处理,通常需要将语言数学化,因为计算机机器只认数学符号。向量是人把自然界的东西抽象出…

MySQL创建电子订阅表相关指令(创建,删除,查询,说明,添加)

利用以下代码创建一个名字为one的数据库。 查看数据库是否创建完成 。 创建一个在one数据库中的表格&#xff0c;括号里是字段名和数据类型&#xff0c;用逗号隔开&#xff0c;给id设置主键&#xff0c;确保id的唯一性。 INSERT INTO 为添加数据&#xff0c;one.subscribe中o…

第 1 章 MyBatis快速入门

1.1 ORM简介 ORM&#xff08;Object Relational Mapping&#xff0c;对象——关系映射&#xff09;框架的主要功能是根据映射配置文件&#xff0c;完成数据在对象模型与关系模型之间的映射&#xff0c;同时出屏蔽了连接数据库、创建 Statement 对象、执行 SQL、读取 ResultSet…

DSP 如何在调试时便捷查看数组元素

背景描述: 在CCS调试过程中&#xff0c;需要查看一些变量的值&#xff0c;但是数组只能显示第一个元素的值&#xff0c;不能全部展示出来&#xff0c;这样就不便于查看了。 解决方法: 找到变量显示窗口 选中数组右键 设置开始元素和需要展示的个数 这样就可以把数组展开…

Java->Map和Set

目录 一、搜索树 1.概念 2.查找 3.插入 4.删除 二、搜索 1.Map的使用 1.1关于map的说明 1.2map的常用方法 2.Set的使用 2.1关于set的说明 2.2set的常用方法 三、哈希表 1.概念 2. 哈希冲突 3.冲突避免 3.1哈希函数的设计 3.2负载因子调节 4.解决冲突 4.1闭…

3 机器学习之假设空间

归纳(induction)与演绎(deduction)是科学推理的两大基本手段。前者是从特殊到一般的“泛化”(generalization)过程&#xff0c;即从具体的事实归结出一般性规律&#xff1b;后者则是从一般到特殊的“特化”(specialization)过程&#xff0c;即从基础原理推演出具体状况。例如&a…

一款功能强大的颜色选择工具ColorPicker

ColorPicker 是一款轻量级且功能强大的颜色选择工具&#xff0c;专为设计师、开发者以及需要在日常工作中处理颜色的用户设计。该工具允许用户从屏幕上的任意位置快速获取颜色代码&#xff0c;并提供多种格式的颜色值输出&#xff0c;包括RGB、HEX、HSB等。 ColorPicker的界面…

YOLO的相关改进机制

我的面包多平台有多种关于YOLO的改进&#xff0c;大家尽早关注&#xff0c;不迷路

opencv 答题卡检测项目实现

在教育和考试领域&#xff0c;答题卡自动评分系统能够大大提高效率和准确性。本文将介绍如何使用OpenCV库实现一个简单的答题卡检测项目。这个项目包括读取图像、检测答题卡轮廓、透视变换、二值化处理、检测选择题答案&#xff0c;并最终计算得分。 导入库和定义常量 import …

动态规划-路径问题——931.下降路径最小和

1.题目解析 题目来源&#xff1a;931.下降路径最小和——力扣 测试用例 2.算法原理 1.状态表示 我们可以开辟一个dp表&#xff0c;多开辟一行两列用来存储虚拟位置&#xff0c;dp[i][j]表示从第一行到该位置的最小路径和 2.状态转移方程 由于要找到最小路径和&#xff0c;并且由…

中间件镜像升级策略

进入集群 kubectl edit deployments paas-bmm-v1 -n kube-system 修改容器 abcsys.cn:5000/boc3.7/bmm-web-v4:latest-202410091355

【芯片知识】 | 浅谈NRK3502语音芯片IC的工作原理

随着科技的快速发展&#xff0c;语音技术逐渐渗透到我们生活的各个领域&#xff0c;如智能家居、车载导航、手机通讯等。作为语音技术的核心&#xff0c;语音芯片在其中发挥着重要作用。今天&#xff0c;我们将深入探讨NRK3502这款先进的语音芯片IC的工作原理&#xff0c;以及它…