题目
解题思路
很明显就是二分搜索,但是被溢出坑了很久一直超时qaq
超时的解决方法:
类型转换:long long int mid = ((long long int)left + (long long int)right) / 2;
防溢出代码:int mid = left + (right - left) / 2;
具体代码
// Forward declaration of isBadVersion API.
bool isBadVersion(int version);
class Solution {
public:
int binary_search(int left, int right) {
while (left < right) {
long long int mid = ((long long int)left + (long long int)right) / 2;
if (isBadVersion(mid)) {
right = mid;
}
else {
left = mid + 1;
}
}
return left;
}
int firstBadVersion(int n) {
return binary_search(1, n);
}
};