力扣: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