有一个数组,假如有一百万个数据,其中有一个的值与其他的不同。
如何在最短时间内将这个数据找出来
要求:不要开辟新的使用空间,如使用哈希表
不要使用判断语句,如if
我觉得我的答案比较给力,给出如下:
第一个,提取数据特征,然后使用跳转表。
比如下面以输入一个CHAR数组为例。C语言,需要查找0xfe的情况下。
#define TARGET 0xfe
STATIC void (*JumpList)(char **)[2] = {check, function};
void *check(char **data)
{
*data += 1;
}
void *function(char **data)
{
printf("Find !\n");
}
int find(char data[], int data_count)
{
int i;
char *tmp_data = data;
for (i = 0; i < data_count; i++)
{
JumpList[*iData & TARGET](&iData);
}
}
加班加的好累啊…………