題目描述
在一個長度爲n的數組裏的所有數字都在0到n-1的範圍內。 數組中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出數組中任意一個重複的數字。 例如,如果輸入長度爲7的數組{2,3,1,0,2,5,3},那麼對應的輸出是第一個重複的數字2。
題解
#include <iostream>
#include <vector>
using namespace std;
bool duplicate(int numbers[], int length, int *duplication) {
vector<bool> b = {0};
for (int i = 0; i < length; i++) {
if (b[numbers[i]]) {
*duplication = numbers[i];
return true;
}
b[numbers[i]] = true;
}
return false;
}
int main() {
ios::sync_with_stdio(false);
int n, res;
int a[1001];
cin >> n;
for (int i = 0; i < n; i++)
cin >> a[i];
cout << duplicate(a, n, &res) << endl;
cout << res;
return 0;
}