278. First Bad Version【力扣】

题意理解

一串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都可以
    }

猜你喜欢

转载自blog.csdn.net/xiexie1357/article/details/88177145