做leetcode的一道很普通的二分查找的问题的时候,使用的是用惯的mid=(front+low)/2写法,结果这次遇到了overflow问题,改成mid=front+(back-front)/2就没有问题了。
写在这提醒一下自己要注意溢出问题。
先抄下题目原文:
然后我写的二分查找是:
// Forward declaration of isBadVersion API.
bool isBadVersion(int version);
class Solution {
public:
int firstBadVersion(int n) {
if(n==0)return 0;
int front=1,back=n;
while(front<back){
int middle=front+(back-front)/2;
front=(isBadVersion(middle))?front:middle+1;
back=(isBadVersion(middle))?middle:back;
}
return front;
}
};