LeetCode 解題練習:Guess Number Higher or Lower
題目原文描述 https://leetcode.com/problems/guess-number-higher-or-lower/
中文描述
電腦從 1 到 n 選一個數字,當玩家猜數字時,電腦會給予太高或太低的提示。請使用以定義的函式 int guess(int num),此函式回傳值得意義如下:
- -1 ,代表玩家猜的數字比電腦選的大。
- 1 ,代表玩家猜的數字比電腦選的小。
- 0 ,代表玩家猜中電腦選的數字。
請輸出電腦所選的數字為何。
範例一:
輸入 n = 10, 電腦選 4
輸出 4
範例二:
輸入 n = 100, 電腦選 93
輸出 93
解法:
使用二分搜尋法 Binary Search 解即可。
Python Code
# The guess API is already defined for you.
# @param num, your guess
# @return -1 if num is higher than the picked number
# 1 if num is lower than the picked number
# otherwise return 0
# def guess(num: int) -> int:
class Solution:
def guessNumber(self, n: int) -> int:
l = 1
r = n
g = (l + r) // 2
ans = guess(g)
while ans != 0:
if ans == -1:
r = g - 1
else:
l = g + 1
g = (l + r) // 2
ans = guess(g)
return g
若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。
If you like this post, please click the ads on the blog or buy me a coffee. Thank you very much.
留言