二分法查找:
但是有一个问题,就是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;
}