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

蓝桥杯 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

相关文章:

  • 01、基础入门-SpringBoot2课程介绍
  • 制作一款打飞机游戏48:敌人转向
  • 【氮化镓】AlGaN合金中成分相关的辐射响应
  • AI数字赋能,点亮精神心理康复之路 —— 华南精神心理数字化诊疗体系3.0发布会圆满举办成功!
  • 抽奖系统-奖品-活动
  • android实现USB通讯
  • Go语言中的函数类型参数:深入理解`func()`
  • CPU、GPU、内存、服务负载、数据库资源暂占用、数据库连接的概念关系详解
  • 纯css实现蜂窝效果
  • Java 性能调优全解析:从设计模式到 JVM 的 7 大核心方向实践
  • 力扣-102.二叉树的层序遍历
  • 5.14 note
  • Android 适配之——targetSdkVersion 30升级到31-34需要注意些什么?
  • 探索自我重复的奇妙之旅--递归
  • 构建你的第一个 MCP 服务
  • 2025年PMP 学习十三 第9章 项目资源管理(9.1,9.2)
  • 【工奥阀门科技有限公司】签约智橙PLM
  • deepseek梳理java高级开发工程师微服务面试题-进阶版
  • Linux grep -r 查找依赖包是否存在依赖类 Class
  • 【进程控制二】进程替换和bash解释器
  • 马上评|“衣服越来越难买”,对市场是一个提醒
  • 5吨煤炭“瞬间蒸发”?掺水炭致企业损失千万,腐败窝案曝光
  • 学习教育期间违规吃喝,李献林、叶金广等人被通报
  • 盖茨说对中国技术封锁起到反作用
  • 上海能源科技发展有限公司原董事长李海瑜一审获刑13年
  • 民企老板被错羁212天续:申请国赔千万余元,要求恢复名誉赔礼道歉