找出数组中重复的数字
内存限制:128 MB
时间限制:1.000 S
题目描述
在一个长度为 n 的 nums 数组中己经有某些数字是重复的,并且nums数组里所有的数字都在0~n-1的范围内,但不知道有几个数字重复了。请找出数组中所有重复的数字。(输出多个重复数字间用空格分隔)
输入
第一行为数组长度 n。第二行为 n个整数,数字的空格分隔。
输出
数组中所有重复的数字,依从小到大排列。(输出多个重复数字间用空格分隔)
样例输入1
7
2 3 1 0 2 5 3
样例输出1
2 3
样例输入2
4
10 10 9 9
样例输出2
9 10
我的代码如下
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int n, freq[100010];
vector<int> vec;
int main() {
cin >> n;
for (int i = 0, x; i < n; ++i) {
cin >> x;
++freq[x];
}
for (int i = 0; i <= n; ++i) {
for (int j = 2; j <= freq[i]; ++j) {
vec.push_back(i);
}
}
sort(vec.begin(), vec.end());
for (int i = 0; i < vec.size(); ++i) {
cout << vec[i] << ' ';
}
return 0;
}
样例1是ok的,可样例2就会出现问题,希望有人能给我一个正确的代码