1、题目描述
2、解题思路
经典的给定一个 API 来辅助二分查找的算法题,本题的关键在于:如果当前版本是正确的版本,那么第一个错误的版本肯定不是当前版本;如果当前版本是错误的版本,那么当前版本可能是第一个错误的版本。
因此,设计二分查找解决时,如果是正确的版本,新的区间就不要包含当前版本;如果是错误的版本,新的区间就得包含当前的版本。
3、解题代码
/* 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 left = 1;
int right = n;
while (left < right) {
int mid = left + (right - left) / 2;
if (isBadVersion(mid)) {
right = mid;
} else {
left = mid + 1;
}
}
return left;
}
}