您的位置:首页 > 其它

leetcode 278. First Bad Version

2017-03-01 09:47 357 查看
很简单的二分搜索的题目,但是提交得时候在一个case:2126753390 versions 1702766719 is the first bad version TLE了。

原因是求中位数的时候公式使用得不恰当。或者将int改成long long int。

//int mid = (leftInd + rightInd) / 2; 会溢出
int mid = leftInd + (rightInd - leftInd) / 2;

// Forward declaration of isBadVersion API.
bool isBadVersion(int version);

class Solution {
public:
int firstBadVersion(int n) {
int leftInd = 1, rightInd = n;
while (leftInd <= rightInd) {
int mid = leftInd + (rightInd - leftInd) / 2;
//int mid = (leftInd + rightInd) / 2;
//cout << leftInd << " " << mid << " " << rightInd << endl;
if (isBadVersion(mid)) {
rightInd = mid - 1;
} else {
leftInd = mid + 1;
}
}
return leftInd;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: