解题核心:二分法降低计算复杂度
流程图(代表整体思路)
// The API isBadVersion is defined for you.
// bool isBadVersion(int version);
class Solution {
public:
int firstBadVersion(int n) {
int left=1,right=n;
if(isBadVersion(1))
return 1;
int mid = left + (right - left) / 2;
while(mid!=left){//有规律总结而得终止条件
if(isBadVersion(mid))
right=mid;
else
left=mid;
mid = left + (right - left) / 2;
}
return mid+1;//效果等同于 return right
}
};