题目链接
思路:设置一个记录数组,用来记录每一个数出现的次数,原数+出现的次数就是该有的值了。特别重要的写在注释里了。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int a[] = new int[N];
int b[] = new int[N];
int c[] = new int[1000010];
for(int i=0;i<N;i++) {
a[i] = sc.nextInt();
b[i] = a[i]+c[a[i]];
c[a[i]]++;
}
boolean buf[] = new boolean[2000010];
for(int i=0;i<N;i++) {
while(buf[b[i]]) {
b[i]++;
}
buf[b[i]] = true;
}
StringBuilder sb = new StringBuilder();
for(int i=0;i<N;i++) {
sb.append(b[i]+(i==N-1?"":" "));
}
System.out.println(sb.toString());
}
}
偷大佬思路(无助弱小🤕)