您的位置:首页 > 其它

leetcode --First Bad Version

2015-10-15 13:53 483 查看
小白一枚,从今天开始记录刷日记啦~~~

这道题一看就知道是要用二分查找,就迅速开始写了,写完了调试半天觉得没问题啊,可是一直提示超时。。。。。在网上查了查,才知道,mid=(low+high)/2导致溢出,所以呀,这句是关键!!!要改成mid=low+(high-low)/2. 还有一句在一般二分查找关键字时,改变low high值时都是low=mid+1
或者 high=mid+1.(因为已经比对过a[mid]!=key了,所以,a[mid]便不用再考虑。而本问题中要找第一个出问题的产品版本,即使a[mid]是出问题了,但是不能直接跳过,还要考虑前面的版本中是否还有出错的,故high=mid!!!)

First Bad Version

<span style="font-family:Times New Roman;font-size:18px;">/* The isBadVersion API is defined in the parent class VersionControl.
boolean isBadVersion(int version); */

public class Solution extends VersionControl {
public int firstBadVersion(int n) {
int low=1,high=n,mid=0;
while(low<high)
{
mid=low+(high-low)/2;
if (isBadVersion(mid)) high=mid;
else   low=mid+1;
}
return low;
}
}</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: