LeetCode374-猜数字大小(二分查找)

题目描述得不清不楚

 

1、n是题目给的猜数字范围,从1~n里面猜

2、每次猜的时候,调用guess函数,告诉你猜数字的情况。

 

public int guessNumber(int n) {
        
        //n是一个最大值
        
        //从1~n里面找一个数字
        
        
        int low = 1;
        int high = n;
        
        
        while(true){
            
            int mid = (low+high)/2;
            
            int result = guess(mid);
            
            //他的数字比较小,就是我猜的大了
            if(result==-1){
                high = mid-1;
            }else if(result == 1){
                low = mid+1;
            }else{
                return mid;
            }
            
        }
        
        
        
        
        
    }

 

 

 

真恶心,一看就是溢出了。

改成这样就好了

int mid = low+(high-low)/2;

加上差距的一半,其实就是 加起来的一半了呗

 

0ms.....牛逼

 

posted @ 2018-08-16 22:04  朋友圈  阅读(807)  评论(0编辑  收藏  举报