LeetCode简单题之猜数字大小
題目
猜數(shù)字游戲的規(guī)則如下:
每輪游戲,我都會(huì)從 1 到 n 隨機(jī)選擇一個(gè)數(shù)字。 請(qǐng)你猜選出的是哪個(gè)數(shù)字。
如果你猜錯(cuò)了,我會(huì)告訴你,你猜測(cè)的數(shù)字比我選出的數(shù)字是大了還是小了。
你可以通過調(diào)用一個(gè)預(yù)先定義好的接口 int guess(int num) 來獲取猜測(cè)結(jié)果,返回值一共有 3 種可能的情況(-1,1 或 0):
-1:我選出的數(shù)字比你猜的數(shù)字小 pick < num
1:我選出的數(shù)字比你猜的數(shù)字大 pick > num
0:我選出的數(shù)字和你猜的數(shù)字一樣。恭喜!你猜對(duì)了!pick == num
返回我選出的數(shù)字。
示例 1:
輸入:n = 10, pick = 6
輸出:6
示例 2:
輸入:n = 1, pick = 1
輸出:1
示例 3:
輸入:n = 2, pick = 1
輸出:1
示例 4:
輸入:n = 2, pick = 2
輸出:2
提示:
1 <= n <= 2^31 - 1
1 <= pick <= n
來源:力扣(LeetCode)
解題思路
??給定了范圍和判斷條件,我們就能確定猜的數(shù)字是在那個(gè)子集里。給定的范圍天生是一個(gè)有序的序列,所以這個(gè)題本質(zhì)上還是一個(gè)二分查找的題,鑒于此,我們可以采用不識(shí)別相等的二分查找進(jìn)行。
# The guess API is already defined for you.
# @param num, your guess
# @return -1 if my number is lower, 1 if my number is higher, otherwise return 0
# def guess(num: int) -> int:class Solution:def guessNumber(self, n: int) -> int:low,high=1,nwhile low<high:mid=(low+high)//2if guess(mid)>0:low=mid+1else:high=midreturn low
總結(jié)
以上是生活随笔為你收集整理的LeetCode简单题之猜数字大小的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode简单题之字符串中的最大奇
- 下一篇: LeetCode简单题之换酒问题