Overview
You are a product manager with n versions [1, 2, ..., n]. One version is bad, and all subsequent versions are also bad. Given an API isBadVersion(version), find the first bad version while minimizing calls.
Constraints
1 <= bad <= n <= 2^31 - 1- Must use O(log n) calls to
isBadVersion.
Examples
// n = 5, bad = 4 firstBadVersion(5); // => 4 // isBadVersion(3) → false, isBadVersion(5) → true, isBadVersion(4) → true
Solution
Reveal solution
function solution(isBadVersion) {
return function(n) {
let lo = 1, hi = n;
while (lo < hi) {
const mid = lo + ((hi - lo) >> 1);
if (isBadVersion(mid)) hi = mid;
else lo = mid + 1;
}
return lo;
};
}Resources
first-bad-version.js
First Bad Version
easycodingAlgorithmsBinary Search
Overview
You are a product manager with n versions [1, 2, ..., n]. One version is bad, and all subsequent versions are also bad. Given an API isBadVersion(version), find the first bad version while minimizing calls.
Constraints
1 <= bad <= n <= 2^31 - 1- Must use O(log n) calls to
isBadVersion.
Examples
// n = 5, bad = 4 firstBadVersion(5); // => 4 // isBadVersion(3) → false, isBadVersion(5) → true, isBadVersion(4) → true
Solution
Reveal solution
function solution(isBadVersion) {
return function(n) {
let lo = 1, hi = n;
while (lo < hi) {
const mid = lo + ((hi - lo) >> 1);
if (isBadVersion(mid)) hi = mid;
else lo = mid + 1;
}
return lo;
};
}Resources
NameTopicDifficulty
103 of 103 problems