/******************************************************
题目:数组中重复的数字
长度为n的数组,所有数字都是0~n-1范围内,找出数组中任意重复的数字。
如{2,3,1,0,2,5,3},那么输出2或3
思路:如果数组没有重复的,排序后,第i个数的值为i
从开头扫描字符串,如果a[i]!=i,就把a[i]和第a[ a[i] ]交换。
即第一次扫描,2 !=0,把2和第a[2]=1交换,如果两个下标出现的数字一样,就说明不满足情况。
*******************************************************/
#include "stdafx.h"
#include<iostream>
using namespace std;
bool duplicate(int arr[],int n)//有n个数
{
if(arr == NULL ||n < 0)return false;
for(int i =0;i <n;++i)
{
if(arr[i]<0 || arr[i]> n -1)
return false;
}
for(int i =0;i < n;++i)
{
while(arr[i] != i)
{
if(arr[i] == arr[arr[i]])
{
cout << arr[i] << endl;
return true;
}
swap(arr[i],arr[arr[i]]);
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int arr[6]={3,2,1,4,3,5};
duplicate(arr,6);
system("pause");
return 0;
}
【 Algorithm】数组中重复的数字
最新推荐文章于 2022-05-16 14:40:52 发布