通过题目描述我们可以用哈希表(map)来查找某个数字是否出现过,如果出现过就加1,反之直接跳过,因此我们只需要一个变量即可,用一个for循环遍历,从第二个数开始用count来查找是否有值对应,最后直接输出即可,为了优化,我们可以用unordered_map来替换map来提高效率,但是该做法仍有部分案例无法及时通过
上代码
#include<iostream>
#include<cstring>
#include<unordered_map>
#include<algorithm>
using namespace std;
int main(void)
{
int n; cin >> n;
unordered_map <int,int> mp;
for(int i = 1; i <= n; i++){
int a; cin >> a;
if(i > 1){
while(mp.count(a)){//如果a在之前出现过,就不断加1直到没有数字出现过
a++;
}
}
mp[a]++;
cout << a << ' ';
}
cout << endl;
return 0;
}