二分查找,需要注意的是,求mid的时候可能会造成溢出问题,因此采用left + (right - left)/ 2的方法。
// The API isBadVersion is defined for you.
// bool isBadVersion(int version);
class Solution {
public:
int firstBadVersion(int n) {
int left = 1;
int right = n;
int mid;
while(left < right){
mid = left + (right - left) / 2;
if(isBadVersion(mid)){
right = mid;
}else{
left = mid + 1;
}
}
return left;
}
};