Files
2021-06-14 02:03:55 +08:00

94 lines
2.2 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# [374. Guess Number Higher or Lower](https://leetcode.com/problems/guess-number-higher-or-lower/)
## 题目
We are playing the Guess Game. The game is as follows:
I pick a number from `1` to `n`. You have to guess which number I picked.
Every time you guess wrong, I will tell you whether the number I picked is higher or lower than your guess.
You call a pre-defined API `int guess(int num)`, which returns 3 possible results:
- `1`: The number I picked is lower than your guess (i.e. `pick < num`).
- `1`: The number I picked is higher than your guess (i.e. `pick > num`).
- `0`: The number I picked is equal to your guess (i.e. `pick == num`).
Return *the number that I picked*.
**Example 1:**
```
Input: n = 10, pick = 6
Output: 6
```
**Example 2:**
```
Input: n = 1, pick = 1
Output: 1
```
**Example 3:**
```
Input: n = 2, pick = 1
Output: 1
```
**Example 4:**
```
Input: n = 2, pick = 2
Output: 2
```
**Constraints:**
- `1 <= n <= 231 - 1`
- `1 <= pick <= n`
## 题目大意
猜数字游戏的规则如下:
- 每轮游戏我都会从 1  n 随机选择一个数字。 请你猜选出的是哪个数字。
- 如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。
你可以通过调用一个预先定义好的接口 int guess(int num) 来获取猜测结果,返回值一共有 3 种可能的情况(-11 或 0
- 1我选出的数字比你猜的数字小 pick < num
- 1我选出的数字比你猜的数字大 pick > num
- 0我选出的数字和你猜的数字一样。恭喜你猜对了pick == num
返回我选出的数字。
## 解题思路
- 这一题是简单题,和小时候玩的猜大猜小的游戏一样。思路很简单,二分查找即可。这一题和第 278 题类似。
## 代码
```go
package leetcode
import "sort"
/**
* 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
* func guess(num int) int;
*/
func guessNumber(n int) int {
return sort.Search(n, func(x int) bool { return guess(x) <= 0 })
}
func guess(num int) int {
return 0
}
```