当前位置: 首页 > news >正文

[数组二分查找] 0374. 猜数字大小

文章目录

      • 1. 题目链接
      • 2. 题目大意
      • 3. 示例
      • 4. 解题思路
      • 5. 参考代码

1. 题目链接

374. 猜数字大小 - 力扣(LeetCode)



2. 题目大意

描述:猜数字游戏。给定一个整数 nn 和一个接口 def guess(num: int) -> int:,题目会从 1∼n 中随机选取一个数 x。我们只能通过调用接口来判断自己猜测的数是否正确。

要求:要求返回题目选取的数字 x。

说明

  • def guess(num: int) -> int:返回值:
    • −1:我选出的数字比你猜的数字小,即 pick<num;
    • 1:我选出的数字比你猜的数字大 pick>num;
    • 0:我选出的数字和你猜的数字一样。恭喜!你猜对了!pick==num。


3. 示例

输入:n = 10, pick = 6
输出:6
输入:n = 1, pick = 1
输出:1


4. 解题思路

思路 1:二分查找

利用两个指针 left、right。left 指向数字 1,right 指向数字 n。每次从中间开始调用接口猜测是否正确。

  • 如果猜测的数比选中的数大,则 right 向左移,令 right = mid - 1,继续从中间调用接口猜测;
  • 如果猜测的数比选中的数小,则 left 向右移,令 left = mid + 1,继续从中间调用的接口猜测;
  • 如果猜测正确,则直接返回该数。


5. 参考代码

public class Solution extends GuessGame {public int guessNumber(int n) {int left=1, right=n;while(left < right){int mid=left+(right-left)/2;if(guess(mid)<=0){right=mid;}else{left=mid+1;}}return right;}
}



http://www.mrgr.cn/news/70790.html

相关文章:

  • PICO+Unity MR空间锚点
  • ZooKeeper集群指南-新增节点配置
  • C++ 语言实现读写.csv文件.xls文件
  • 计算机网络易混淆知识点串记
  • 线性代数(第三章:向量)
  • InnoDB存储引擎
  • 知名开源项目官宣停更,太痛了!
  • (66)RLS均衡器和LMS均衡器作用于通过频率选择性衰落信道的16-QAM信号的性能对比MATLAB仿真
  • Python函数专题:偏函数
  • halcon拉普拉斯算子
  • 【优选算法】探索双指针之美(一): 同向双指针缔造滑动窗口
  • SpringBoot(十二)SpringBoot配置redis
  • 使用金鸣识别在线网页版将行驶证转为结构化Excel教程
  • C#画图板的详细示例代码
  • 【linux】CentOS 的软件源(Repository)学习
  • C++ | Leetcode C++题解之第559题N叉树的最大深度
  • 【Linux】获得同一子网下当前在线设备IP/Latency/MAC 通过nmap指定CIDR扫描当前在线设备
  • 启动QT时,出现找不到python27.dll的问题报错
  • 后端:Aop 面向切面编程
  • Springboot配置全局异常通用返回
  • Golang | Leetcode Golang题解之第559题N叉树的最大深度
  • 初识Linux · 共享内存
  • NRZ(Non-Return to Zero Code,非归零码),NRZI(Non-Return to Zero Inverted Code,非归零反转码)
  • SpringBoot(十三)SpringBoot配置webSocket
  • SIwave:在 SIwave 中释放计算频率扫描的强大功能
  • SpringBoot(八)使用AES库对字符串进行加密解密