python数字尺寸_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 # 返回

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值