您的位置:首页 > Web前端

剑指Offer——n个0到n-1的数里重复的数字

2016-04-08 20:36 447 查看
主要思路:

一般:排序后查找;

常用:构造哈希表;

最优:交换查重;

以下代码为交换查重的代码,在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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: