278. First Bad Version 折半查找,分治法


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 havenversions[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 APIbool isBadVersion(version)which will return whetherversionis 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.



/* 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;
        int high = n;
        int mid=0;
        while(low<high){
        
        mid= low + (high-low)/2;
        if(isBadVersion(mid)==false) {
            low = mid+1;
            
        }else{
            high = mid;
            
        }
        }
        return low;
    }
}

优质内容筛选与推荐>>
1、第121题:买卖股票的最佳时机
2、HyperView使用备忘 显示一个ListenerView,并且设置初始数据的方法
3、Office 365管理中心门户
4、对Webview跨源攻击的理解
5、五大关键 让你二十年后依然是人才 [转载]


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号