hash不错,但是要想找出个不冲突的数字hash函数比较难
数组a[N],存放了1至N-1个数,其中某个数重复一次。写一个函数,找出被重复的数字.时间复杂度必须为o(N)函数原型:
1) N=10 a[N]={1,2,3,4,5,6,7,8,9,9} ?
2) N=10 a[N]={1,2,3,5,6,7,8,9,10,10} ?
3) N=10 a[N]={1,2,3,5,6,7,8,9,12,12} ?
楼上的这个算法不行吧,你不知道第几个数是重复的怎么把剩下的1到N-1 的加起来?
取出a[0],一个一个的和后面的比较,如果没有相等的就再取出a[1],重复上面的比较。
如果a[i]==a[i+n];return a[i];
大家看看上面的算法行么?在网吧上网的。只能写个思路大家讨论。
这样做可取,但不符合题意:注意时间复杂度是O(N)。
用数学方法,同意福尔摩斯的算法。
门外汉 看不懂