看题目很容易想到以下代码
public class Main {
public static void main(final String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
List<Integer>list=new ArrayList<>();
for(int i=0;i<n;i++) {
Integer num=sc.nextInt();
while(list.contains(num)) {
num++;
}
list.add(num);
}
System.out.println(list);
sc.close();
}
}
但是这样只能处理较少情况,遇到特殊数肯定会超时。下面的这种处理方法优化了不少,不是每次+1了,而是直接加相同数字出现过的次数,比如有3个1,第二个1就是+1,第三个直接+2,而不是两次+1,而且每次都记录每次的新值出现的次数,这样循环到新数未出现过为止。
public class Main {
static int[] a1 = new int[1000010], a2 = new int[1000010];//一个用于输出,一个用于储存节点
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
for (int i = 0; i < a; i++) {
int count = sc.nextInt();
for (;;) //循环遍历
{
if (a2[count] == 0) { //确定输入的值是否已经存在
a2[count]++;//若不存在则标记推出循环
break;
}else {
a2[count]++;//若存在则为该标识访问次数加一减少循环次数
count +=a2[count] - 1;
}
}
a1[i] = count;
}
for (int i = 0; i < a; i++) {
System.out.print(a1[i] + " ");
}
}
}
复制代码 代码如下: span style="font-size:14px;"css和js带参数(形如.css?v=与...
首先先看实现代码 html代码部分 !DOCTYPE htmlhtmlheadtitlePreviewing Links/ti...
mysql前期学习整理 1.mysql的优缺点 优点有良好的事务管理能力崩溃修复能力。 缺...
进入2021年,正如去年,微软将在今年推送两次Windows 10重大版本升级,21H1和21H...
本文章多以图片代替文字方便大家直接在软件上实践。 我们先看题目 先分析题目 一...
本文转载自微信公众号「程序员历小冰」,可以通过以下二维码关注。转载本文请联...
js源码: /// reference path="jquery-1.8.3.js" / /// reference path="ajaxFor...
EL 全名为Expression Language EL 语法很简单,它最大的特点就是使用上很方便。...
3 月 23 日消息在 Windows 10 预览版中,微软在逐步将控制面板功能转向现代 设置...
一、万用表的使用 万用表是一种带有整流器的、可以测量交、直流电流、电压及电阻...