题目
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 d 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 will return whether version is bad. Implement a function to find the first bad version. You should minimize the number of calls to the API.
Example:
Given n = 5, and version = 4 is the first bad version.
call isBadVersion(3) -> false
call isBadVersion(5) -> true
call isBadVersion(4) -> true
Then 4 is the first bad version.
十分钟尝试
其实是个查询问题,利用折半查找试试,结果正确,我以为折半查找的时候,如果isbadversion为true,需要判断是否前一个为false,才能认定是第一个,其实不用。但是leetcode测试超时,为了避免,可以把left+right/2写成left+(right-left)/2
/* The isBadVersion API is defined in the parent class VersionControl.
boolean isBadVersion(int version); */
public class Solution extends VersionControl {
public int firstBadVersion(int n) {
if(n==1) return n;
//折半查找
int low=1;
int high=n;
while(low<=high){
int mid=low+(high-low)/2;
boolean isBad=isBadVersion(mid);
if(isBad){
high=mid-1;
}
else{
low=mid+1;
}
}
return low;
}
}
继续阅读与本文标签相同的文章
上一篇 :
GPS-RTK测量技术的不足处和解决的方案
下一篇 :
Aha!设计模式(23)-工厂方法(4)
-
绑手指、蒙布也能行,OpenAI让机器人单手还原魔方
2026-05-18栏目: 教程
-
斩获三个“全国第一”,漳州有一家“隐形冠军”企业
2026-05-18栏目: 教程
-
经历8个月改造,岗顶百脑汇“转型回归”
2026-05-18栏目: 教程
-
ROKU流媒体聚合平台终将变革电视机操作系统和流媒体的观看方式
2026-05-18栏目: 教程
-
权威报告:中国专利申请连续8年居首,占世界一半
2026-05-18栏目: 教程
