[LeetCode] 374. Guess Number Higher or Lower_Easy tag: Binary Search
2018-08-29 07:22 Johnson_强生仔仔 阅读(209) 评论(0) 编辑 收藏 举报We are playing the Guess Game. The game is as follows:
I pick a number from 1 to n. You have to guess which number I picked.
Every time you guess wrong, I'll tell you whether the number is higher or lower.
You call a pre-defined API guess(int num)
which returns 3 possible results (-1
, 1
, or 0
):
-1 : My number is lower 1 : My number is higher 0 : Congrats! You got it!
Example:
n = 10, I pick 6. Return 6.
思路也是典型的Binary Search, 只是需要注意的是guess(num) 每次对应的是猜的数高了, 还是答案高了即可.
Code
# 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): class Solution(object): def guessNumber(self, n): l, r = 1, n while l + 1 < r: mid = l + (r-l)//2 num = guess(mid) if num == 1: l = mid elif num == -1: r = mid else: return mid return l if guess(l) == 0 else r