LeetCodeDay18 —— 第一个错误的版本

2018-04-26  本文已影响0人  GoMomi

278. 第一个错误的版本

描述
说明
思路
  1. 题目进行了一个包装,本质就是在排序的列表中找到一个数,因此利用二分查找即可。
  2. 要注意与二分查找不同的是 end = mid 而不是 mid - 1。每次找到的BadVesion是一个待选版本,不能抛弃。
// Forward declaration of isBadVersion API.
bool isBadVersion(int version);

class Solution_278 {
 public:
  int firstBadVersion(int n) {
    int start = 1, end = n;
    while(start < end){
      int mid = start + (end - start) / 2;
      if(isBadVersion(mid)) end = mid;
      else start = mid + 1;
    }
    return start == end ? start : -1;
  }
};
上一篇 下一篇

猜你喜欢

热点阅读