【二分法】解题浅析
public int firstBadVersion(int n) {
int lo = 1, hi = n;
int final_var = 0;
while(lo <= hi){
<pre name="code" class="java"> int mid = lo + (hi - lo)/2;
if(isBadVersion(mid)){ hi = mid - 1; final_var = mid; }else{ lo = mid + 1; } } return final_var; }
1.int mid = (hi + lo)/2;
2.int mid = lo + (hi - lo)/2;
但是这个AC了
分析原因,从例题中分析,两个查询的顺序基本一致,那么两者存在的问题就是精度问题,使用方法1会有可能产生溢出现象。