leetcode每日不做题
461. 汉明距离
852. 山脉数组的峰顶索引
374. 猜数字大小
278. 第一个错误的版本
474. 一和零
231. 2 的幂
342. 4的幂
1074. 元素和为目标值的子矩阵数量
477. 汉明距离总和
12. 整数转罗马数字
1190. 反转每对括号间的子串
692. 前K个高频单词
1738. 找出第 K 大的异或坐标值
1442. 形成两个异或相等数组的三元组数目
993. 二叉树的堂兄弟节点
421. 数组中两个数的最大异或值
13.罗马数字转整数
本文档使用 MrDoc 发布
-
+
首页
374. 猜数字大小
[力扣原题链接](https://leetcode-cn.com/problems/guess-number-higher-or-lower/) ## 题目 猜数字游戏的规则如下: 每轮游戏,我都会从`1`到`n`随机选择一个数字。 请你猜选出的是哪个数字。 如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。 你可以通过调用一个预先定义好的接口`int guess(int num)`来获取猜测结果,返回值一共有`3`种可能的情况(`-1`,`1`或`0`): - `-1`:我选出的数字比你猜的数字小 `pick < num` - `1`:我选出的数字比你猜的数字大 `pick > num` - `0`:我选出的数字和你猜的数字一样。恭喜!你猜对了!`pick == num` 返回我选出的数字。 **示例 1:** ``` 输入:n = 10, pick = 6 输出:6 ``` **示例 2:** ``` 输入:n = 1, pick = 1 输出:1 ``` **示例 3:** ``` 输入:n = 2, pick = 1 输出:1 ``` **示例 4:** ``` 输入:n = 2, pick = 2 输出:2 ``` **提示:** ![](/media/202106/2021-06-14_145819.png) ## 思路 二分查找 ## 代码 语言:Java ``` /** * 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); */ public class Solution extends GuessGame { public int guessNumber(int n) { int low = 1; int high = n; int mid = 1; // 二分查找 while (low <= high) { mid = low + (high-low) / 2; // 防止int值溢出 if(guess(mid) == 0) { break; } else if(guess(mid) == -1) { // pick 比 mid 小 high = mid - 1; } else { // pick 比 mid 大 low = mid + 1; } } return mid; } } ```
renyi567
2021年6月14日 14:59
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
阅读量
次
本站总访问量
次
本站访客数
人次
Markdown文件
分享
链接
类型
密码
更新密码