374. 猜数字大小(Python)

题目

难度:★★☆☆☆
类型:数组

我们正在玩一个猜数字游戏。 游戏规则如下:
我从 1 到 n 选择一个数字。 你需要猜我选择了哪个数字。
每次你猜错了,我会告诉你这个数字是大了还是小了。
你调用一个预先定义好的接口 guess(int num),它会返回 3 个可能的结果(-1,1 或 0):

-1 : 我的数字比较小
1 : 我的数字比较大
0 : 恭喜!你猜对了!

示例

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

解答

这道题和【题目278. 第一个错误版本】的题意和解法基本相同,这里直接使用二分法进行判断。

class Solution(object):
    def guessNumber(self, n):
        """
        :type n: int
        :rtype: int
        """
        left, right = 0, n                      # 左右指针初始化为搜索范围两端
        while left <= right:                    # 指针合法时,执行
            mid = left + (right - left) // 2    # 求取中点
            flag = guess(mid)                   # 获得中点情况
            if flag == 1:                       # 猜小了
                left = mid + 1                  # 抛弃左半部分搜索区域
            elif flag == -1:                    # 猜搭了
                right = mid - 1                 # 抛弃右半部分搜索区域
            else:                               # 猜对了
                return mid                      # 返回

如有疑问或建议,欢迎评论区留言~

你可能感兴趣的:(374. 猜数字大小(Python))