Acwing---1242. 修改数组——并查集的简单应用

news2024/9/29 18:13:59

修改数组

  • 1.题目
  • 2.基本思想
  • 3.代码实现

1.题目

给定一个长度为 N 的数组 A=[ A1,A2,⋅⋅⋅AN ] ,数组中有可能有重复出现的整数。

现在小明要按以下方法将其修改为没有重复整数的数组。

小明会依次修改 A2,A3,⋅⋅⋅,AN

当修改 Ai 时,小明会检查 Ai 是否在 A1∼Ai−1 中出现过。

如果出现过,则小明会给 Ai 加上 1;如果新的 Ai仍在之前出现过,小明会持续给 Ai加 1,直到 Ai 没有在 A1∼Ai−1 中出现过。

当 AN 也经过上述修改之后,显然 A数组中就没有重复的整数了。

现在给定初始的 A 数组,请你计算出最终的 A数组。

输入格式
第一行包含一个整数 N。

第二行包含 N 个整数 A1,A2,⋅⋅⋅,AN。

输出格式
输出 N 个整数,依次是最终的 A1,A2,⋅⋅⋅,AN。

数据范围
1 ≤ N ≤ 1 0 5 , 1≤N≤10^5 , 1N105,
1 ≤ A i ≤ 1 0 6 1≤Ai≤10^6 1Ai106

输入样例:

5
2 1 1 3 4

输出样例:

2 1 3 4 5

2.基本思想

并查集

单链表式的并查集

  • p [ i ] p[i] p[i]:单链表中的下一个节点
    i i i所在树的根节点:从 i i i开始向右找第一个没被用过的位置

步骤:依次从第一个位置开始往后扫描,进行find(x),更新p[x]=x+1
eg:第二个1:从1开始找到第一个没被用过的,1更新为数字3,将3进行指针后移。

在这里插入图片描述

3.代码实现

import java.util.Scanner;

public class _1242修改数组 {
    static Scanner sc = new Scanner(System.in);
    static int N = 1100010;
    static int p[] = new int[N];

    static int find(int x) {
        if (p[x] != x) p[x] = find(p[x]);
        return p[x];
    }

    public static void main(String[] args) {
        int n = sc.nextInt();
        for (int i = 1; i < N; i++) p[i] = i;//初始化 并查集
        for (int i = 1; i <= n; i++) {
            int x = sc.nextInt();
            x = find(x);//找到 从 x 开始 第一个 没有被用过的数字
            System.out.print(x);
            p[x] = x + 1;//更新
        }
    }
}

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

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

相关文章

在VScode里面添加Python解释器

VScode编辑器在安装好Python插件之后会自动选择环境变量中排序最高的那一个解释器作为默认解释器&#xff0c;而想要额外添加新的Python解释器就需要自己设置。 Python和VScode编辑器安装在Windows系统中 Python扩展插件安装在VScode编辑器 第一步&#xff0c;打开VScode编辑…

leaflet 绘制渐变折线(094)

第094个 点击查看专栏目录 本示例的目的是介绍如何在vue+leaflet中绘制渐变折线。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共89行)安装插件相关API参考:专栏目标示例效果 配置方式 1)查看基础设置:htt…

分布式算法 - Raft算法

Paxos是出了名的难懂&#xff0c;而Raft正是为了探索一种更易于理解的一致性算法而产生的。它的首要设计目的就是易于理解&#xff0c;所以在选主的冲突处理等方式上它都选择了非常简单明了的解决方案。推荐阅读提示强烈推荐通过如下资料学习raft。 raft.github.io这里面有一个…

基于Springboot+vue+协同过滤+前后端分离+智能图书推荐系统(用户,多商户,管理员)

技术栈: SpringBoot,SSM, MYSQL, Vue,Layui,JQUERY,HTML,CSS, JAVASCRIPT,前后台分离,日历控件,协同过滤(余弦函数)-基于用户过滤首页访问 http://localhost:8080/vue_gxhfztjxt管理员admin 123456商家 seller1 123456买家 user1 123456代码下载链接&#xff1a;https://pan.ba…

【转载】STM32 Timer定时器开机立即进入中断问题(HAL库)

【转载】STM32 Timer定时器开机立即进入中断问题&#xff08;HAL库&#xff09;问题1问题2F407定时器更新中断问题&#xff08;TIM_IT_Update中断&#xff09;STM32 定时器有时一开启就进中断的话题[STM32CubeF4] HAL中的定时器中断处理函数&#xff0c;存在重复进入的隐患问题…

(二)变形梯度和相对变形梯度

本文主要内容如下&#xff1a;1. 变形梯度2. 变形梯度的逆3. 相对变形梯度4. 两点张量1. 变形梯度 a. 运动变形前&#xff0c;参考构型中某代表性物质点 A 邻域内的线元&#xff1a; dX⃗dXAG⃗Adxic⃗id\vec{X}dX^A\vec{G}_Adx^i\vec{c}_idXdXAGA​dxici​ b. 运动变形后&…

Laravel框架01:composer和Laravel简介

Laravel框架01&#xff1a;composer和Laravel简介一、Composer介绍二、创建Laravel项目三、Laravel目录结构四、Laravel启动方式一、Composer介绍 composer 是PHP中用来管理依赖关系的工具。类似于Javascript的NPM。composer官网&#xff1a;https://getcomposer.org/安装结束…

【bug】Transformer输出张量的值全部相同?!

【bug】Transformer输出张量的值全部相同&#xff1f;&#xff01;现象原因解决现象 输入经过TransformerEncoderLayer之后&#xff0c;基本所有输出都相同了。 核心代码如下&#xff0c; from torch.nn import TransformerEncoderLayer self.trans TransformerEncoderLayer…

SPARC体系下硬浮点编译故障分析

问题说明 之前extension版的app工程都是用的软浮点编译的&#xff0c;在增加姿控算法库后&#xff0c;统一改用硬浮点运行&#xff0c;发现之前一个浮点数解析不对了&#xff0c;排查发现和工程编译选项有关&#xff0c;为软浮点时正常&#xff0c;硬浮点时异常。该问题脱离业…

【华为OD机试模拟题】用 C++ 实现 - VLAN 资源池(2023.Q1)

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

Stream操作流 练习

基础数据&#xff1a;Data AllArgsConstructor NoArgsConstructor public class User {private String name;private int age;private String sex;private String city;private Integer money; static List<User> users new ArrayList<>();public static void m…

【计算机三级网络技术】 第一篇 网络系统结构与系统设计的基本原则

网络系统结构与系统设计的基本原则 文章目录网络系统结构与系统设计的基本原则一、计算机网络的基本结构二、计算机网络分类及其互联方式1.局域网2.城域网3.广域网4.计算机网络的互联方式三、局域网技术四、城域网技术1.城域网的概念2.宽带城域网建设产生的影响3.推动城域网快速…

HTML - 扫盲

文章目录1. 前言2. HTML2.1 下载 vscode3 HTML 常见标签3.1 注释标签3.2 标题标签3.3 段落标签3.4 换行标签3.5 格式化标签1. 加粗2. 倾斜3. 下划线3.6 图片标签3.7 超链接标签3.8 表格标签3.9 列表标签4. 表单标签4.1 from 标签4.2 input 标签4.3 select 标签4.4 textarea标签…

webgl渲染优化——深度缓冲区、多边形缓冲机制

文章目录前言深度缓冲区多边形缓冲机制总结前言 webgl在渲染三维场景时&#xff0c;按照Z坐标的值决定前后关系&#xff0c;但是在默认状态下它并未开启深度检测&#xff0c;而是将后绘制的物体放在前面&#xff1b;当两个物体Z坐标相差无几时&#xff0c;会产生深度冲突&…

【Redis】线程模型:Redis是单线程还是多线程?

【Redis】线程模型&#xff1a;Redis是单线程还是多线程&#xff1f; 文章目录【Redis】线程模型&#xff1a;Redis是单线程还是多线程&#xff1f;Redis 是单线程吗&#xff1f;Redis 单线程模式是怎样的&#xff1f;Redis 采用单线程为什么还这么快&#xff1f;Redis 6.0 之前…

高端装备的AC主轴头结构

加工机器人的AC主轴头和位置相关动力学特性1. 位置依赖动态特性及其复杂性2. AC主轴头2.1 常见主轴头摆角结构2.2 摆动机构3. 加装AC主轴头的作用和局限性4. 切削机器人的减速器类型5. 其他并联结构形式参考文献资料1. 位置依赖动态特性及其复杂性 However, FRF measurements …

JS学习第3天——Web APIs之DOM(什么是DOM,相关API)

目录一、Web APIs介绍1、API2、Web API二、DOM1、DOM树2、获取元素3、事件基础4、操作元素属性5、节点&#xff08;node&#xff09;操作三、以上内容总结四、小案例一、Web APIs介绍 JS的组成&#xff1a;ECMAScript&#xff08;基础语法&#xff09;、DOM&#xff08;页面文…

CTFer成长之路之反序列化漏洞

反序列化漏洞CTF 1.访问url&#xff1a; http://91a5ef16-ff14-4e0d-a687-32bdb4f61ecf.node3.buuoj.cn/ 点击下载源码 本地搭建环境并访问url&#xff1a; http://127.0.0.1/www/public/ 构造payload&#xff1a; ?sindex/index/hello&ethanwhoamiPOST的参数&#…

【渗透测试学习】—记录一次自测试渗透实战

写在前面 本文是作者入门web安全后的第一次完整的授权渗透测试实战&#xff0c;因为最近在总结自己学习与挖掘到的漏&#xff0c;无意中翻到了这篇渗透测试报告&#xff0c;想当初我的这篇渗透测试报告是被评为优秀渗透测试报告的&#xff0c;故在此重新整了一下&#xff0c;分…

创客匠人直播:构建公域到私域的用户增长模型

进入知识付费直播带货时代&#xff0c;很多拥有知识技能经验的老师和培训机构吃到了流量红利。通过知识付费直播&#xff0c;老师们可以轻松实现引流、变现&#xff0c;还可以突破时间、地域的限制&#xff0c;为全国各地的学员带来优质的教学服务&#xff0c;因此越来越受到教…