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;
    }
}
原文地址:https://www.cnblogs.com/y1040511302/p/11585165.html