第一个错误的版本
First Bad Version
解
这里我试了一下暴力搜索
// Forward declaration of isBadVersion API.
bool isBadVersion(int version);
int firstBadVersion(int n) {
for (int i = 1; i < n; i++){
if(isBadVersion(i)){
return i;
}
}
return n;
}
结果TLE了
二分查找
如果mid为true,那么它之前的都是true,其实也可以看成是有顺序的,可以用二分法
// Forward declaration of isBadVersion API.
bool isBadVersion(int version);
int firstBadVersion(int n) {
int left = 1, right = n;
while(left < right){
int mid = left + (right - left) / 2;
if(isBadVersion(mid)){
right = mid;
}else{
left = mid + 1;
}
}
return left;
}
结果