题目分析
题目链接
解这道题目,我用到了二分查找的思想。特殊的地方是我们要找的是第一个 Bad Version。找到 Bad Version 的时候不是立马结束程序返回对应的位置,而是继续查找,直到锁定第一个 Bad Version。
代码
/* 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 start = 1;
int end = n;
while(start + 1 <end) {
int mid = start + (end - start) / 2;
if(isBadVersion(mid)) {
end = mid;
} else {
start = mid;
}
}
return isBadVersion(start) ? start : end;
}
}
网友评论