代码:
#include<iostream>
bool Duplicate(int array_teat[], int len, int& result)
{
if(array_teat == nullptr || len <= 0) //判断参数是否符合条件
{
return false;
}
for(int i = 0; i < len; ++i)//判断数组是否符合的条件
{
if(array_teat[i] > len - 1 || array_teat[i] < 0)
{
return false;
}
}
for(int i = 0; i < len; ++i)
{
while(array_teat[i] != i)
{
if(array_teat[i] == array_teat[array_teat[i]])
{
result = array_teat[i];
return true;
}
// int temp = array_teat[i];//这是我第一次错误的写法,因为array_teat[i] 已经被改变啦,不能再用它来做索引啦!
// array_teat[i] = array_teat[array_teat[i]];
// array_teat[array_teat[i]] = temp;
int temp = array_teat[i];
array_teat[i] = array_teat[temp];
array_teat[temp] = temp;
}
}
return false;
}
int main()
{
int test[10] = {1, 5, 6, 5, 5, 8, 9, 6, 6, 0};
int result;
if(Duplicate(test, 10, result))
{
std::cout << result << std::endl;
}
return 0;
}