假设1-10000里有一个数字缺失,现在有9999个无序数字,如何快速定位这个数字?
1如果数组是有序的,可以采用快排方法,但是这个方法没有针对性,时间复杂度为O(nlogn)
2使用作何再做差的方法
result = sum(1-10000) - sum(a[0]-a[9998])
这种方法的复杂度为O(n)但是有可能溢出,缺乏鲁棒性。
3转化为find single number的方法,复杂度为O(n)
代码如下
int FindMissingNum( int numbers[] , int len){
int i,result;
if( numbers == NULL || len < 2)
return ERROR;
result = numbers[0];