从 0,1,2,...,n 这 n+1 个数中选择 n 个数,选择出的数字依然保持有序,找出这 n 个数中缺失的那个数,要求 O(n) 或 O(log(n)) 并尽可能小。
示例:"1 2 3 4 5 7",返回6
"1 2 3 4 5 6",返回7
思路:
因为是从零开始的有序数组,所以在不缺少值得情况下,下标和数值是相等的,所以直接判断下标和数值是否相等就行了,若不等,返回下标值。
代码如下:
/*a是数组,aLen是数组长度*/
int solve(int* a, int aLen ) {
int i=0;
for(i=0;i<=aLen;i++){
if(a[i]!=i)
return i;
}
return 0;
}