只用二分
一个长度为n-1的递增数组中所有的数字都是唯一的,
并且每个数字都在范围0~n-1之内,
在范围内的n个数字中有且只有一个数字不在该数组中,
请找出这个数字。 n<100
#include<bits/stdc++.h>
using namespace std;
int queshide(int num[],int x) {
int left=0;
int right=x-1;
while(left<=right) {
int mid=(left+right)/2;
if(num[mid]==mid) left=mid+1;
else right=mid-1;
}
return left;
}
int main() {
int a,b[100];
cin>>a;
for(int i=0; i<a-1; i++)
cin>>b[i];
cout<<queshide(b,a);
}