【手绘漫画】图解LeetCode之猜数字大小(LeetCode 374题)

2020-04-20 16:01:28 浏览数 (1)

1、写在前面

手绘漫画系列正式上线!!!"图解LeetCode刷题计划" 来了!!!

今天是第八期,争取每天一期,最多两天一期,欢迎大家监督我。。。

最近依旧是二分查找算法呢~

使用新版的模板加上图解,相信你能更加理解二分法的使用!!!

2、题目

首先看一下题目,

分界条件就是数字的大小!!!调用 API 就可以实现这个功能,简直是白给。

不过题目写的有点隐晦。。。有人吐槽这题都TM写错了。。。你们是怎么作对的?笑死我了。

3、正文

首先分析一下情况,n = 6pick = 2

确定一下 leftright,然后编写二分查找模板。

可以看到,guess(mid) 时,所以 pickmid 的右侧,因为有等号,所以 left = mid,要注意判断结果,不能只写个 left ,因为是存在 -1 的情况的,价格 if(guess(left)==0) return left; 就好了。

因为是模板二,所以不要忘记给 mid 加1!!!

4、代码

代码语言:javascript复制
/**  * Forward declaration of guess API. * @param  num   your guess * @return 	     -1 if num is lower than the guess number *			      1 if num is higher than the guess number *               otherwise return 0 * int guess(int num); */
int guessNumber(int n){	int left=0;    int right=n;    while(left<right){        int mid = (long)left   right   1 >> 1;        int res=guess(mid);        if (res >= 0) {            // 左边界更新为 mid   1            left = mid;        }        else {            // 右边界更新为 mid - 1            right = mid - 1;        }    }    if(guess(left)==0) return left;    return -1;}

0 人点赞