这是我参与11月更文挑战的第17天,活动详情查看:2021最后一次更文挑战。
题目描述:
374. 猜数字大小 - 力扣(LeetCode) (leetcode-cn.com)
猜数字游戏的规则如下:
- 每轮游戏,我都会从
1
到n
随机选择一个数字。 请你猜选出的是哪个数字。 - 如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。
你可以通过调用一个预先定义好的接口 int guess(int num)
来获取猜测结果,返回值一共有 3 种可能的情况(-1
,1
或 0
):
-1:我选出的数字比你猜的数字小 pick < num
1:我选出的数字比你猜的数字大 pick > num
0:我选出的数字和你猜的数字一样。恭喜!你猜对了!pick == num
返回我选出的数字。
示例一
1 | ini复制代码输入: n = 10, pick = 6 |
示例二
1 | ini复制代码输入: n = 1, pick = 1 |
示例三
1 | ini复制代码输入: n = 2, pick = 1 |
示例四
1 | ini复制代码输入: n = 2, pick = 2 |
提示:
1 <= n <= 2^31 - 1
1 <= pick <= n
思路分析
二分查找
这个应该是典型的二分查找了,我们的区间即为 [1..n],再根据 guess(x) = 1 代表右区间大了。
AC代码
1 | Kotlin复制代码class Solution { |
总结
典型的二分查找,可以尝试套用不同的二分查找公式来写出不一样的解。
参考
猜数字大小 - 猜数字大小 - 力扣(LeetCode) (leetcode-cn.com)
374. Guess Number Higher or Lower 猜数字大小 - 猜数字大小 - 力扣(LeetCode) (leetcode-cn.com)
本文转载自: 掘金