bool duplicate(int numbers[], int length, int* duplication) {
/*方法1
int temp;
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;
}
temp=numbers[i];
numbers[i]=numbers[temp];
numbers[temp]=temp;
}
}
return false;
*/
//方法2
if(numbers==nullptr||length<=0)
return false;
for(int i=0;i<length;i++)
{
if(numbers[i]<0||numbers[i]>length-1)
return false;
}
map<int,int> mp;
for(int i=0;i<length;i++)
{
if(mp.find(numbers[i])==mp.end())
mp[numbers[i]]=i;
else
{
*duplication=numbers[i];
return true;
}
}
return false;
}
};
/*方法1
int temp;
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;
}
temp=numbers[i];
numbers[i]=numbers[temp];
numbers[temp]=temp;
}
}
return false;
*/
//方法2
if(numbers==nullptr||length<=0)
return false;
for(int i=0;i<length;i++)
{
if(numbers[i]<0||numbers[i]>length-1)
return false;
}
map<int,int> mp;
for(int i=0;i<length;i++)
{
if(mp.find(numbers[i])==mp.end())
mp[numbers[i]]=i;
else
{
*duplication=numbers[i];
return true;
}
}
return false;
}
};