/* The isBadVersion API is defined in the parent class VersionControl.
boolean isBadVersion(int version); */
public class Solution extends VersionControl {
//根据题意,可以当成一个有序数组,所以用二分检索来实现
public int firstBadVersion(int n) {
int low = 1, high = n;
int mid = low + (high - low) / 2;//mid = (low + high) / 2;这种算法会导致int溢出,导致死循环
while(low < high){
mid = low + (high - low) / 2;
if(isBadVersion(mid)){
high = mid;
}
else{
low = mid + 1;
}
//System.out.println("low:" + low + " " + "mid:" + mid + " " + "high:" + high);
}
if(isBadVersion(low)){
return low;
}
else if(isBadVersion(low + 1)){
return low + 1;
}
else{
return 0;
}
}
}