主要思路:
一般:排序后查找;
常用:构造哈希表;
最优:交换查重;
以下代码为交换查重的代码,在vs2015中调试运行无误。
#include "stdafx.h"
#include<iostream>
using namespace std;
bool duplicate(int data[],int length, int &duplication)
{
if(NULL == data || length < 2)
return false;
for (int i = 0;i<length;++i)
{
if(data[i]<0 || data[i]>length-1)
return false;
}
for (int i = 0;i<length;++i)
{
while(data[i] != i)
{
if(data[i] == data[data[i]])
{
duplication = data[i];
return true;
}
int temp = data[i];
data[i] = data[temp];
data[temp] = temp;
}
}
return false;
}
int main()
{
const int length = 5;
int input[length] = {1, 2 ,3 ,4, 4};
int result = 0;
if(duplicate(input,length,result))
{
cout<<"\n the same number is: \n"<<result;
}
else
{
cout<<"Invalid input!";
}
while (1);
}