数组数字重复查找算法C (菜鸟上路,牛人指点,谢谢!)
/****************************************************
problem:
数组a[N],存放了1至N-1个数,其中某个数重复一次。写一个函数,
找出被重复的数字.时间复杂度必须为o(N)函数原型:
int do_dup(int a[],int N)
*****************************************************/
//my code
#include <stdio.h>
#define MAX 100
//假设最大数组为100
int foo(int a[], int n);
int main(void)
{
int a[5]={1,3,2,3,4};
printf("%d\n",foo(a,5));
return 0;
}
int foo(int a[], int n)
{
int j=0,i=0;
int array[MAX];
for (; i<n; i++)
{
j = a[i];
if (array[j-1]!=1)
{
array[j-1]=1;
}
else
{
return j;
}
}
}
有更好的方法或者我的代码有所不妥的地方,望大家批评指教,谢谢!