Skip to content
On this page

374. 猜数字大小

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

题目描述

我们正在玩猜数字游戏。猜数字游戏的规则如下:

我会从 1n 随机选择一个数字。 请你猜选出的是哪个数字。(我选的数字在整个游戏中保持不变)。

如果你猜错了,我会告诉你,我选出的数字比你猜测的数字大了还是小了。

你可以通过调用一个预先定义好的接口 int guess(int num) 来获取猜测结果,返回值一共有三种可能的情况:

- `-1`:你猜的数字比我选出的数字大 (即 `num > pick`)。

- `1`:你猜的数字比我选出的数字小 (即 `num < pick`)。

- `0`:你猜的数字与我选出的数字相等。(即 `num == pick`)。

返回我选出的数字。

示例 1:

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

示例 2:

**输入:**n = 1, pick = 1 **输出:**1

示例 3:

**输入:**n = 2, pick = 1 **输出:**1

提示:

1 <= n <= 231 - 1
- `1 <= pick <= n`

难度: Easy


题解代码

javascript
/** 
 * Forward declaration of guess API.
 * @param {number} 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
 * var guess = function(num) {}
 */

/**
 * @param {number} n
 * @return {number}
 */
const guessNumber = n => {
    let start = 1
    let end = n

    while (start <= end) {
        const mid = Math.floor((start + end) / 2)
        switch(guess(mid)) {
            case -1:
                end = mid
                break
            case 1:
                start = mid + 1
                break
            case 0:
                return mid
        }
    }
};

技术文档集合