数组中有1002个数字,两个数字是相同的。如何有效地在这个数组中找到相同的数字,或者是否有一个有效的算法?
这是我的算法:
for i in range(0, 1002):
for j in range(i+1, 1002):
if(a[i]==a[j]):
return a[i]
发布于 2014-06-15 10:57:36
这应该管用!
#include<stdio.h>
#define RANGE 1000000001
int main()
{
int arr[1002];//your all numbers;
short int hash[RANGE];//Your range of numbers
long long int i;
for(i = 0; i < RANGE; i++)
hash[i] = 0;
for(i = 0; i < 1002; i++)
{
if(hash[arr[i]] != 0)
{
printf("Duplicate number is:%d\n",arr[i]);
break;
}
else
hash[arr[i]]++;
}
return 0;
}
发布于 2014-06-15 10:53:29
我认为最有效的解决方案是使用散列集:
from sets import Set
s=Set()
for x in [1,2,3,4,5,2,3,1]:
if x in s:
print x
break
s.add(x)
发布于 2014-06-15 10:46:54
如果您的值是数字,则可以使用基类填充缓冲区并检查出现两次的元素。
https://stackoverflow.com/questions/24232890
复制