61.第一个错误的版本
题目内容:
代码及思路:
这道题实际上是寻找从1-n的寻找没出错与出错版本的分界线,即最简单的思路是利用二分类查找的方式进行寻找。
// Forward declaration of isBadVersion API.
bool isBadVersion(int version);
class Solution {
public:
int firstBadVersion(int n) {
//使用递归的方式进行二分类查找
long low=1;
long high=n;
long mid=(low+high)>>1; 右移操作与(low+high)/2时间更少
while(low<high)
{
//对当前位置是否为出错版本进行判断
if(isBadVersion(mid)) //如果是true则表明是错误的版本,则对low·mid继续二分
{
high=mid;
}
else //如果是false,则表明是正确版本,则在 mid+1~high中继续二分
{
low=mid+1;
}
mid=(low+high)>>1;
}
return low;
}
};