找出任一重复数字 数组范围0-n-1
bool duplicate(int numbers[],int length,int *duplication){//传地址,通过参数返回重复数字
//robust
if(numbers==nullptr||length<=0){
return false;
}
for(int i=0;i<length;i++){
if(numbers[i]<0||numbers[i]>length-1) return false;
}
for(int i=0;i<length;i++){
while(numbers[i]!=i){
if(numbers[i]==numbers[numbers[i]]){
*duplication=numbers[i];return true;
}
//swap
int temp=numbers[i];
numbers[i]=numbers[numbers[i]];
numbers[numbers[i]]=temp;
}
}
return false;
}