You are a product manager and currently leading a team to develop a new product. Unfortunately, the latest version of your product fails the quality check. Since each version is developed based on the previous version, all the versions after a bad version are also bad.
Suppose you have n versions [1, 2, ..., n] and you want to find out the first bad one, which causes all the following ones to be bad.
You are given an API bool isBadVersion(version) which returns whether version is bad. Implement a function to find the first bad version. You should minimize the number of calls to the API.
Example 1:
Input: n = 5, bad = 4 Output: 4 Explanation: call isBadVersion(3) -> false call isBadVersion(5) -> true call isBadVersion(4) -> true Then 4 is the first bad version.
Example 2:
Input: n = 1, bad = 1 Output: 1
// The API isBadVersion is defined for you.
// bool isBadVersion(int version);
class Solution {
public:
int firstBadVersion(int n) {
int low = 1, high = n;
while(1){
int bad = (low + high)/2;
if (isBadVersion(bad)) high = bad;
else low =bad;
if (high = low +1) return high;
}
}
};
这篇博客介绍了一个产品管理的问题,当最新版本的产品未通过质量检查时,如何找到导致所有后续版本都出问题的第一个坏版本。文章提供了一个二分查找的解决方案来最小化调用API `isBadVersion` 的次数,以确定哪个版本开始出现错误。
464

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



