在堆区申请一个超级大的一维数组空间,用它的下标存原数组的数。。出现一次对应下标的值+1…觉得这样方便的不然就是不停的遍历…暂时没想到其他办法…就投机一下。
int Find(int *pStr,int len,int *pa)
{
int i;
int *p1 = pStr;
for(i = 0;i<len;i++)
{
//printf("=%d=",p1[i]);
int index = p1[i];
pa[index]+=1;
//printf("pa[%d] = %d ",index,pa[index]);
}
int max = pa[0];
int max1 = 0;
for(i =0;i<10000000;i++)
{
if(pa[i]>max)
{
max = pa[i];
max1 = i;
}
}
return max1;
}
int main(int argc, char const *argv[])
{
int *pa = (int *)malloc(sizeof(int)/sizeof(char)*10000000);
if(NULL == pa)
{
printf("error\n");
}
int s[]={1,2,5,3,32,44,3,4,3,9,10,9,9,9,9,99,9};
int length = sizeof(s)/sizeof(int);
int max = Find(s,length,pa);
printf("max = %d\n",max);
free(pa);
pa = NULL;
if(NULL == pa)
printf("success\n");
return 0;
}