力扣每日一题:374.猜数字大小 python二分查找的基础公式!

简介: 力扣每日一题:374.猜数字大小 python二分查找的基础公式!

374.猜数字大小


https://leetcode-cn.com/problems/guess-number-higher-or-lower/solution/374cai-shu-zi-da-xiao-pythoner-fen-cha-z-6b8x/

难度:简单


题目:

猜数字游戏的规则如下:

每轮游戏,我都会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。

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

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

  • -1:我选出的数字比你猜的数字小 pick < num
  • 1:我选出的数字比你猜的数字大 pick > num
  • 0:我选出的数字和你猜的数字一样。恭喜!你猜对了!pick == num
    返回我选出的数字。


示例:

示例 1:
输入:n = 10, pick = 6
输出:6
示例 2:
输入:n = 1, pick = 1
输出:1


分析

今天这道每日一题,比昨天的:

278.第一个错误的版本

要更简单一些,是一个标准的二分查找target。虽然这道题的中文翻译实在是有些逗比...

然后看看官方解题,解决不知道是套公式套的死板还是怎样?

以下是官方解题:

class Solution:
    def guessNumber(self, n: int) -> int:
        left, right = 1, n
        while left < right:
            mid = (left + right) // 2
            if guess(mid) <= 0:
                right = mid   # 答案在区间 [left, mid] 中
            else:
                left = mid + 1   # 答案在区间 [mid+1, right] 中
        # 此时有 left == right,区间缩为一个点,即为答案
        return left

搞不懂,既然guess结果为0,即找到target了,不退出循环,还在那里缩小什么范围?

就是为了让你的代码看着能少一层判断,“显得”更为简洁吗?


解题:

class Solution:
    def guessNumber(self, n: int) -> int:
        left = 1
        right = n
        while left <= right:
            mid = (left + right) // 2
            ret = guess(mid)
            if ret == 0:
                return mid
            elif ret == -1:
                right = mid - 1
            else:
                left = mid + 1




相关文章
|
2月前
|
算法 编译器 C语言
C语言猜数字小游戏(也包含python实现的用法)
本文基于VS2022、pycharm和前面的知识,写一个凭借分支与循环的小游戏,比如: 写一个猜数字游戏 游戏要求: 电脑自动生成1~100的随机数 玩家猜数字,猜数的过程中,根据猜测数据的大小给出大了或小了的反馈,直到猜对,游戏结束 在pyhton中生成随机数是比较简单的,可以直接导入random的包,直接生成随机数,导致写猜数字小游戏变成了判读语句和循环语句嵌套就能写出来,所以我不做过多的介绍了,可以直接看后面的代码展示,想了解更多的python可看python的基础知识,这里面有我在学习python的过程中写的笔记
33 0
|
4月前
leetcode:374. 猜数字大小(二分查找)
leetcode:374. 猜数字大小(二分查找)
17 0
|
5天前
leetcode代码记录(二分查找
leetcode代码记录(二分查找
6 0
|
1月前
|
存储 Python
如何使用Python实现“猜数字”游戏
本文介绍了使用Python实现“猜数字”游戏的过程。游戏规则是玩家在给定范围内猜一个由计算机随机生成的整数,猜对则获胜。代码中,首先导入random模块生成随机数,然后在循环中获取玩家输入并判断大小,提供猜小、猜大提示。通过增加猜测次数限制、难度选择、优化输入提示和图形化界面等方式可优化游戏。这篇文章旨在帮助初学者通过实际操作学习Python编程。
41 2
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
tqdm库融入猜数字小游戏(python
tqdm库融入猜数字小游戏(python
24 1
|
3月前
|
Python
用 Python 写一个猜数字游戏并运行它
用 Python 写一个猜数字游戏并运行它
15 0
|
3月前
|
IDE 开发工具 Python
用python写出一个猜数字游戏
用python写出一个猜数字游戏
34 4
|
4月前
|
算法 Python Java
Python每日一练(20230429) 地下城游戏、杨辉三角II、旋转数组
Python每日一练(20230429) 地下城游戏、杨辉三角II、旋转数组
38 0
Python每日一练(20230429) 地下城游戏、杨辉三角II、旋转数组
|
4月前
|
算法
【Leetcode 74】搜索二维矩阵 —— 二分查找|矩阵
给你一个满足下述两条属性的`m x n`整数矩阵:每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数
|
4月前
|
算法 测试技术 C#
map|二分查找|离线查询|LeetCode:2736最大和查询
map|二分查找|离线查询|LeetCode:2736最大和查询