題目
你是產(chǎn)品經(jīng)理,目前正在帶領(lǐng)一個(gè)團(tuán)隊(duì)開發(fā)新的產(chǎn)品。不幸的是,你的產(chǎn)品的最新版本沒有通過質(zhì)量檢測。由于每個(gè)版本都是基于之前的版本開發(fā)的,所以錯(cuò)誤的版本之后的所有版本都是錯(cuò)的。
假設(shè)你有 n 個(gè)版本 [1, 2, ..., n],你想找出導(dǎo)致之后所有版本出錯(cuò)的第一個(gè)錯(cuò)誤的版本。
你可以通過調(diào)用 bool isBadVersion(version) 接口來判斷版本號(hào) version 是否在單元測試中出錯(cuò)。實(shí)現(xiàn)一個(gè)函數(shù)來查找第一個(gè)錯(cuò)誤的版本。你應(yīng)該盡量減少對調(diào)用 API 的次數(shù)。
實(shí)現(xiàn)
public int firstBadVersion(int n) {
int low = 1;
int high = n;
int mid = -1;
while (low <= high) {
mid = (low + high) >>> 1;
if(isBadVersion(mid)){
if(mid == 1){
break;
}
high = mid - 1;
} else {
if(isBadVersion(mid + 1)){
mid += 1;
break;
}
low = mid + 1;
}
}
return mid;
}