C++ 代码
// y总思路的 c语言版
void swap(int *a, int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
int duplicateInArray(int *nums, int n){
for(int i=0; i<n; i++)
{
if(nums[i]<0||nums[i]>n-1) return -1;
}
for(int i=0; i<n; i++)
{
while(nums[i]!=i && nums[i]!=nums[nums[i]]) swap(&nums[i],&nums[nums[i]]);
//出现重复数字后无法 满足后一个条件直接跳出while 否则继续每次移动一个数到正确的位置
if(nums[i]!=i) return nums[i];
}
return -1;
}