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                      # 返回

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容