LeetCode 278 第一个错误的版本[二分法] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 278 第一个错误的版本[二分法] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。

在这里插入图片描述解题思路:
这道题目难点不在于二分法,因为这里的二分太简单了,就是正常的二分,分割点也就在true和false之间的那个true,本题的难点在于溢出的问题,因为函数输入只能是int型,但是mid如果是相加 / 2会有例子溢出。。。溢出发生在 high + low 这里,所以要避免溢出的发生,要进行一下变形,改成low + (high - low) / 2即可,特别巧妙,代码如下:

// The API isBadVersion is defined for you. 
// bool isBadVersion(int version);

class Solution {
public:
    int firstBadVersion(int n) {
        int low = 0, high = n;
        while(low < high) {
            int mid = low + (high - low) / 2;
            if(isBadVersion(mid) == false) {
                low = mid + 1;
            } else {
                high = mid;
            }
        }
        return high;
    }
};


/*作者:heroding
链接:https://leetcode-cn.com/problems/first-bad-version/solution/cer-fen-fa-bi-mian-yi-chu-miao-jie-by-he-pxnd/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。*/

以上是关于LeetCode 278 第一个错误的版本[二分法] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 278 第一个错误的版本[二分法] HERODING的LeetCode之路

leetcode 278. 第一个错误的版本

leetcode 278. 第一个错误的版本

LeetCode刷题278-简单-第一个错误版本

LeetCode刷题278-简单-第一个错误版本

LeetCode 278 First Bad Version(第一个坏版本)(二分法)(*)