zoukankan      html  css  js  c++  java
  • 【手绘漫画】图解LeetCode之猜数字大小(LeetCode 374题)

    在这里插入图片描述

    图解LeetCode刷题计划

    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、代码

    /** 
     * 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;
    }
    

    在这里插入图片描述
    在这里插入图片描述

    如果有幸帮到你,请帮我点个【赞】,给个【关注】!如果能顺带【评论】给个鼓励,我将不胜感激。

    如果想要更多的资源,欢迎关注 @我是管小亮,文字强迫症MAX~

  • 相关阅读:
    Sublime : python环境
    shell:遍历目录和子目录的所有文件
    Java:方法的参数是传值还是传引用
    Sublime Text:Windows下配置C 编译环境和GDB调试环境
    代码优化的一些尝试
    go:关于变量地址的疑惑
    go:结构体的可访问性
    go:channel(未完)
    H5常见问题及解决方案。
    谷歌插件大全地址
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13302576.html
Copyright © 2011-2022 走看看