/*问题描述:数组a[N],存放了1至N-1个数,其中某个数重复一次。写一个函数,找出被重复的数字.时间复杂度必须为O(N),函数原型:int do_dup(int a[], int N)
*/#include <stdio.h>// 返回数组中重复的数
int do_dup(int a[], int N)
{int i;int sum = 0, retValue = 0; // sum保存数组元素的总和for(i = 0; i < N; i++)sum += a[i];retValue = sum - N * (N-1) / 2;return retValue;
}int main()
{int a[] = {1, 2, 3, 3, 4, 5};int v = do_dup(a, sizeof(a) / sizeof(a[0]));printf("重复的数是:%d\n", v);return 0;
}
重复的数是:3
Press any key to continue