题意理解
一串n个版本,已知存在从一个版本开始全部都是bad,求这个开始版本的序号。
问题分析
二分搜索
一个循环处理,注意区间的缩小方式,mid取值。
其他
参考数据结构书P220.
链接
int firstBadVersion(int n) {
int start = 1; //设定区间初值
int end = n; //设定区间初值
while (start < end) //正常区间范围
{
//int mid = (start + end) / 2;
int mid = start + (end - start)/2; //计算中间值
cout << mid << endl;
if (isBadVersion(mid)) //如果满足条件
{
end = mid; //右范围缩小至中间值(和书上程序的变化点)
}
else //不满足条件
{
start = mid + 1; //左范围缩小值中间值后一位
}
}
return start; //出了循环,start==end,返回start,end都可以
}