LeetCode、374. 猜数字大小【简单,二分】

前言

博主介绍:✌目前全网粉丝2W+,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。

涵盖技术内容:Java后端、算法、分布式微服务、中间件、前端、运维、ROS等。

博主所有博客文件目录索引:博客目录索引(持续更新)

视频平台:b站-Coder长路


LeetCode、374. 猜数字大小【简单,二分】

来源:LeetCode专题《LeetCode 75》

题目及类型

题目链接:LeetCode、374. 猜数字大小

类型:基础算法/二分


思路及代码实现

思路:

注意点:对于l + r可能会爆int,我们可以使用一个临时long存储,接着再转为int。

对于猜测的数若是<=目标值,那么区间范围为[l, mid],若是>目标值,区间值范围[mid + 1, r],在本题中由于一定能够命中某一个值,那么最终的结果就一定是l或者r。

代码:

复杂度分析:时间复杂度O(logn);空间复杂度O(1)

/** 
 * Forward declaration of guess API.
 * @param  num   your guess
 * @return 	     -1 if num is higher than the picked number
 *			      1 if num is lower than the picked number
 *               otherwise return 0
 * int guess(int num);
 */
public class Solution extends GuessGame {
   
    public int guessNumber(int n) {
   
        int l = 1, r = n;
        while (l < r) {
   
            //取到中间值   (long)l + r >> 1 会超时,会构成这样的效果(long)l + (r >> 1)
            //我们的目的应该是((long)l + r) >> 1
            long tmp = ((long)l + r) >> 1;//临时使用long存储
            int mid = (int)tmp;
            int pick = guess(mid);
            //若是<=,那么区间为[l, mid],若是> 则为[mid + 1, r]
            if (pick <= 0) {
   
                r = mid;
            }else {
   
                l = mid + 1;
            }
        }
        return l;
    }
}

image-20240119203721836


资料获取

大家点赞、收藏、关注、评论啦~

精彩专栏推荐订阅:在下方专栏👇🏻

更多博客与资料可查看👇🏻获取联系方式👇🏻,🍅文末获取开发资源及更多资源博客获取🍅


整理者:长路 整理时间:2024.1.19

相关推荐

  1. C/C++---------------LeetCode374. 数字大小

    2024-01-20 07:32:01       29 阅读
  2. 【力扣】374.数字大小

    2024-01-20 07:32:01       16 阅读
  3. LeetCode数字游戏

    2024-01-20 07:32:01       23 阅读
  4. leetcode299--数字游戏

    2024-01-20 07:32:01       18 阅读
  5. LeetCode 0299.数字游戏:计数

    2024-01-20 07:32:01       25 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-20 07:32:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-20 07:32:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-20 07:32:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-20 07:32:01       20 阅读

热门阅读

  1. centos7安装nginx

    2024-01-20 07:32:01       28 阅读
  2. React一般可以用哪些值作为key?

    2024-01-20 07:32:01       32 阅读
  3. apache下的CollectionUtils工具类

    2024-01-20 07:32:01       25 阅读
  4. 《设计模式的艺术》笔记 - 命令模式

    2024-01-20 07:32:01       35 阅读
  5. linux 无残留卸载k8s

    2024-01-20 07:32:01       33 阅读
  6. 设计模式-状态模式

    2024-01-20 07:32:01       31 阅读
  7. 从C到C++:向面向对象过渡的技巧与诀窍

    2024-01-20 07:32:01       25 阅读
  8. 【话题】自然语言处理的发展

    2024-01-20 07:32:01       31 阅读
  9. 【数据库原理】(33)数据库实施阶段

    2024-01-20 07:32:01       32 阅读
  10. Android 13.0 Recent列表不显示某个app

    2024-01-20 07:32:01       27 阅读