278. 第一个错误的版本

题目:

思路:

【1】简单的二分

代码展示:

//时间13 ms 击败 94.23%
//内存38.1 MB 击败 73.26%
/* The isBadVersion API is defined in the parent class VersionControl.
      boolean isBadVersion(int version); */

public class Solution extends VersionControl {
    public int firstBadVersion(int n) {
        // 因为是要从[1-n]中猜
        int left = 1, right = n;
        while (left < right) { // 循环直至区间左右端点相同
            //先取中位进行猜
            int mid = left + (right - left) / 2; // 防止计算时溢出
            // isBadVersion(mid) = true 表示属于错误版本
            if (isBadVersion(mid)){
                right = mid;
            }else {
                left = mid + 1; // 答案在区间 [mid+1, right] 中
            }
        }
        // 此时有 left == right,区间缩为一个点,即为答案
        return left;
    }
}

 

posted @ 2023-08-09 12:23  忧愁的chafry  阅读(5)  评论(0编辑  收藏  举报