其他分享
首页 > 其他分享> > 力扣:278. 第一个错误的版本

力扣:278. 第一个错误的版本

作者:互联网

 每次思考都是一种进步

1、从尽量减少调用API次数,便可以知道是二分做啦,设l为0,r为n+1,然后判断中间值是否为错误版本,如果是则r=mid,否则l=mid,因为在这种情况下,正确的和错误的被分成了两部分,l指向正确的部分,r指向错误的部分,当l+1=r的时候则代表l与r是为正确部分和错误部分的交界,从而退出循环,返回r,r就是第一个错误的版本

// The API isBadVersion is defined for you.
// bool isBadVersion(int version);

class Solution {
public:
    int firstBadVersion(int n) {
        long long l=0,r=n;
        ++r;
        while(l+1!=r)
        {
            long long mid=l+(r-l)/2;
            if(isBadVersion(mid)) r=mid;
            else l=mid;
        }
        return r;
    }
};

 ps:这个思路是我从 英雄哪里出来 大佬那里学来的,大佬还是大佬,不是我这小菜鸡能比的。

标签:错误,int,isBadVersion,mid,long,力扣,版本,278,大佬
来源: https://blog.csdn.net/qq_50917103/article/details/120882928