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之路的主要内容,如果未能解决你的问题,请参考以下文章