二分法查找:
但是有一个问题,就是low/2可能不变(比如一直是1)
,所以改成(low+1)/2
用low/2+upp/2是因为可能low+upp大于了int的限制(测试case的原因)
public int firstBadVersion(int n) {
int lower=0;
int upper=n;
int cur=0;
while(lower+1<upper){
cur=(lower+1)/2+upper/2;
if(isBadVersion(cur)){
upper=cur;
}else{
lower=cur;
}
}
return upper;
}

本文介绍了一种改进的二分查找算法实现,针对特定场景下的性能瓶颈进行了优化处理。通过调整中间值的计算方式,避免了整数溢出的风险,并确保了搜索范围的有效缩减。
1413

被折叠的 条评论
为什么被折叠?



