278.第一个错误版本
278. 第一个错误的版本 - 力扣(LeetCode) (leetcode-cn.com)
本题和寻找峰值类似,只不过要多注意一个begin+last的越界问题
从中也可以看出,此种二分查找的方法,可以用于查数组种第一个出现num的值(即num如果在数组中出现很多次,可以用该二分的写法,找到第一次出现的位置)
解答代码:
1 public int firstBadVersion(int n) { 2 int begin = 1 , last = n; 3 while (begin <= last) 4 { 5 int mid = (begin + last) / 2; 6 if (isBadVersion(mid) == true) 7 { 8 last = mid; 9 } 10 else 11 { 12 begin = mid + 1; 13 } 14 } 15 return last; 16 }