查找代码库的第一个坏版本。有一个SVN代码库,版本号从1到N
public int findBadVersion(int N) {
if (N < 2) {
if (n == 1 && isBadVersion(1)) {
return 1;
}
return 0;
}
if (isBadVersion(1)) {
return 1;
}
int left = 0;
int right = N;
int mid;
while (left + 1 < right) {
mid = left + (right - left) / 2;
if (!isBadVersion(mid - 1) && isBadVersion(mid))) {
return mid;
} else if(isBadVersion(mid - 1)) {
right = mid;
} else {
left = mid;
}
}
if (!isBadVersion(left - 1) && isBadVersion(left)) {
return left;
}
if (!isBadVersion(right - 1) && isBadVersion(right)) {
return right;
}
return 0;
}