当前位置: 首页 > ds >正文

蓝桥杯 17. 修改数组

修改数组

原题目链接

题目描述

给定一个长度为 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。

其中:

  • 1 ≤ N ≤ 10^5
  • 1 ≤ Ai ≤ 10^6

输出描述

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


输入输出样例

输入

5
2 1 1 3 4

输出

2 1 3 4 5

c++代码

#include<bits/stdc++.h>using namespace std;vector<int> mp(1000001);int myfind(int x) {int root = x;while(root != mp[root]) root = mp[root];int i = x, j;while(i != root) j = mp[i], mp[i] = root, i = j;return root;
}int main() {int N, a;cin >> N;for (int i = 1; i <= 1000000; i++) mp[i] = i;for (int i = 0; i < N; i++) {cin >> a;int k = myfind(a);cout << k;if (i != N - 1) cout << " ";mp[k] = k + 1;}return 0;
}//by wqs
http://www.xdnf.cn/news/6313.html

相关文章:

  • 【Linux高级IO】多路转接之epoll
  • Linux——mysql主从复制与读写分离
  • 人工智能+ERP:政策新规下企业智能化转型路径
  • 【vue】axios网络请求介绍
  • 【2025版】Spring Boot面试题
  • C语言_自定义类型:结构体
  • (4)python开发经验
  • (十七)Java日期时间API全面解析:从传统Date到现代时间处理
  • Ros2 - Moveit2 - DeepGrasp(深度抓握)
  • golang -- 如何让main goroutine等一等
  • 数智驱动——AI:企业数字化转型的“超级引擎”
  • FreeRTOS学习笔记
  • 【Java学习笔记】finalize方法
  • 前后端分离博客 Weblog 项目实战
  • 【AI大模型】赋能【传统业务】
  • Java基础语法之数组
  • Windows下Docker安装portainer
  • 64. 最小路径和
  • Shell 脚本中的通道号(文件描述符)
  • maven项目, idea右上角一直显示gradle的同步标识, 如何去掉
  • 计算机网络:什么是计算机网络?它的定义和组成是什么?
  • 开源Heygem本地跑AI数字人视频教程
  • python使用matplotlib画图
  • IDEA编辑器设置的导出导入
  • why FPGA喜欢FMC子卡?
  • Vue3学习(组合式API——计算属性computed详解)
  • 使用Word2Vec算法实现古诗自动生成实战
  • Linux514 rsync 解决方案环境配置
  • 2025年渗透测试面试题总结-360[实习]安全工程师(题目+回答)
  • 三维CAD皇冠CAD(CrownCAD)建模教程:工程图模块二