题目描述:
数组a[N]中顺序存放了1至N-1个数,其中某个数重复一次。写一个函数,找出被重复的数字.要求时间复杂度必须为O(N)。
函数原型:int do_dup(int a[],int N);
解题思路:
1、将重复的那一个数字剔除,则得到长度为(N-1)、公差为1的等差数列;
2、对此数列进行求和操作,得到sum1;对数组进行求和操作,得到sum2.
3、sum2-sum1的结果就是重复的那一个数字。
代码如下:
int do_dup(int a[],int N) //未经调试
{
int sum = 0