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; } }