思路:我们可以重排这个数组,原则就是将每个数字放在与它下标对应的位置上去,如果发现该下标位置上的数与自己相等,那么说明该数字重复了。因此从0下标开始,将这个下标对应的数字找出来放到该位置。
# include<iostream>
# include<vector>
using namespace std;
int fun(vector<int> arr)
{
for (int i = 0; i < arr.size(); i++)
{
while (arr[i] != i)
{
if (arr[i] == arr[arr[i]])
{
return arr[i];
}
int tmp = arr[i];
arr[i] = arr[tmp];
arr[tmp] = tmp;
}
}
throw"没有重复";
}
int main()
{
vector<int> arr;
arr.push_back(1);
arr.push_back(2);
arr.push_back(3);
arr.push_back(4);
arr.push_back(5);
arr.push_back(2);
cout << fun(arr) << endl;
return 0;
}