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(low <high){
int bad = low + (high-low)/2;
if (isBadVersion(bad)) high = bad;
else low =bad+1;
}
return high;
}
};
int bad = low + (high-low)/2;
如果不这样写会溢出。
这篇博客讨论了作为产品经理如何管理产品开发团队,当遇到产品质量问题时,如何使用二分查找算法有效地找到导致所有后续版本出错的第一个不良版本。通过调用isBadVersion API,实现了在最少的调用次数下定位问题版本。
204

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



