刷leetcode算法总结(三)

2016-08-23

374.Guess Number Higher or Lower

调用提供的其内部提供的API函数guess函数,可以对你的参数进行大小判断,之后使用一个循环,不断对参数进行二分法即可。

这里容易出错的地方在于二分法计算两个数加和的一半时,如果使用如下第一种方法会出现超过limit的情况,有可能是因为left + right的加和超出了int型数的最大界限,从而发生了这种结果,但使用第二种方法就可以避免这一问题。

mid = (left + right) / 2 mid = left + (right - left) / 2

实现代码如下:

public int guessNumber(int n) {
    if (guess(n)== 0) return n;
    int left=0;
    int right=n;
    while (left<right) {
      	int mid=left+(right-left)/2;
      	int re=guess(mid);
      	if (re==0){
            return mid;
        }else if(guess(mid)==-1){
          right=mid;
        }else{
          left=mid;
        }
         // return left;
    }
    return left;
}
点击查看评论

所有文章