思路:把值为i的元素调整到数组的第i个位置上进行求解。
具体流程如下:
#include<iostream>
using namespace std;
int duplicate(int array[], int length)
{
int duplication;
for (int i = 0; i < length; i++)
{
while (array[i] != i) //只有数组当第i个位置放的元素值为i时,才会跳出while循环,然后i++
{
if (array[i] == array[array[i]])
{
duplication = array[i];
return duplication;
}
swap(array[array[i]], array[i]);
}
}
return -1;
}
int main()
{
int arr[] = { 2, 3, 1, 0, 2, 5 ,3};
const int N = sizeof(arr) / sizeof(int);
int GetNum = duplicate(arr, N);
cout << "output:" << GetNum << endl;
system("pause");
return 0;
}