LeetCode 二分查找

LeetCode 278. 第一个错误的版本

class Solution {
public:
    int firstBadVersion(int n) {
        int left = 1, right = n;
        while (left < right) { // 循环直至区间左右端点相同
            int mid = left + (right - left) / 2; // 防止计算时溢出
            if (isBadVersion(mid)) {
                right = mid; // 答案在区间 [left, mid]} else {
                left = mid + 1; // 答案在区间 [mid+1, right]}
        }
        // 此时有 left == right,区间缩为一个点,即为答案
        return left;
    }
};

二分查找前提:有序

我的思考:其实二分查找不止可以查到有序数组中的某个数,其本质应该是用left和right两个端点查找某个分界点,比如查找某个数n就是查找小于n和大于n的分界点,LeetCode 278. 第一个错误的版本 中就是查找错误和正确返回值的分界点。

你可能感兴趣的:(leetcode刷题总结,leetcode,算法,职场和发展)