哈希算法?
估计哈希表会快些
能些一段代码给我看看吗?比如:int[] arr={1,12,23,34,45,65,76,87,98,1};
@嘿丶蛋炒饭丨: 貌似是《编程珠玑》这本书上第一章的一个问题
。
看你开多大的内存了。如果内存足够,分配个长度为4G的数组,循环一次搞定
//网上找来的
#include <stdio.h>
int a[3]={1,10000000,10000000};
//char类型为8位,共需要10000000/8个char
static unsigned char b[10000000/8+1];
int i;
void main() {
for (i=0;i<3;i++) {
//1<<(a[i]%8)表示1左移余数的位数即为a[i]在b中对应的位,例如1024%8=0,然后1<<0=1(二进制止:00000001),所以1024在b数组的第1024/8个字节的第1 bit中;
//1025%8=1,然后1<<1=2(二进制:00000010),所以1025在b数组的第1025/8个字节的第2 bit中;1026%8=2,然后1<<2=4(二进制:00000100),所以1026在b数组的第1026/8个字节的第3 bit中;以次类推
if (b[a[i]/8]&(1<<(a[i]%8))) break;
else b[a[i]/8]|=(1<<(a[i]%8));
}
if (i<3) printf("%d\n",a[i]);
else printf("Can not find.\n");
printf("%d\n",1<<(1024%8));
printf("%d",5);
}