/**
* public class VersionControl {
* public static boolean isBadVersion(int k);
* }
* you can use VersionControl.isBadVersion(k) to judge wether
* the kth code version is bad or not.
*/
class Solution {
/**
* @param n: An integers.
* @return: An integer which is the first bad version.
*/
public int findFirstBadVersion(int n) {
// 2015-4-11
if (n <= 0) {
return 0;
}
int start = 1;
int end = n;
while (start + 1 < end) {
int mid = (start + end) / 2;
if (VersionControl.isBadVersion(mid)) {
end = mid;
} else {
start = mid;
}
}
// 有可能第一个version就是BadVersiuon
if (VersionControl.isBadVersion(start)) {
return start;
}
return end;
// 不考虑没有BadVersion的情况
}
}
[刷题]First Bad Version
最新推荐文章于 2020-05-24 12:23:39 发布
本文介绍了一个二分查找算法实现的问题:在一系列版本中找到第一个错误版本。通过使用VersionControl.isBadVersion方法判断版本好坏,该算法能在O(log n)的时间复杂度内找到目标版本。
872

被折叠的 条评论
为什么被折叠?



