leetcode 278.第一个错误的版本(Java 二分查找 easy)

https://leetcode-cn.com/problems/first-bad-version/submissions/

给定n个版本,根据isBadVersion(),判断第一个出错误,即值为true的版本号。

 

如果第 m 个版本出错,则表示第一个错误的版本在 [l, m] 之间,令 h = m;否则第一个错误的版本在 [m + 1, h] 之间,令 l = m + 1。

因为 h 的赋值表达式为 h = m,因此循环条件为 l < h。

/* 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 l=1,h=n;
        while(l<h){
            int mid=l+(h-l)/2;
            if(isBadVersion(mid)){
                h=mid;
            }
            else{
                l=mid+1;
            }
        }
        return l;
    }
}

 

posted @ 2019-09-25 15:49  星辰大海。  阅读(243)  评论(0编辑  收藏  举报