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      }

 

posted @ 2022-04-04 14:47  jue1e0  阅读(23)  评论(0)    收藏  举报