示例 1:
输:n = 5, bad = 4
输出:4
解释:
调用 isBadVersion(3) -> false
调用 isBadVersion(5) -> true
调用 isBadVersion(4) -> true
所以,4 是第一个错误的版本。
public class Solution extends VersionControl {
public int firstBadVersion(int n) {
int left = 0;
int right = n;
int mid =0;
while(left < right){
mid = left + (right-left)/2;
if(isBadVersion(mid)){
right=mid;
}else{
left = mid +1;
}
}
return right;
}
}
解题思路
也是使用二分产产找的方法,不同于是数组中找某一个值,这是找多个值中第一个出错的值,何时停止循环就需要烤炉一下了。
可能有人在想,如果是最后一次的mid下的数是1呢,大家可以试一下,如果是1的话right会变得=mid,所以最终都是right下的是第一个。