本文共 1190 字,大约阅读时间需要 3 分钟。
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 :
Input: n = 10, pick = 6Output: 6
思路:依旧是一道二分查找的题.设好left,right.因为一定存在这个pick的数,所以while条件不设置为left<right,直接设为True就可以.
# 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): """ :type n: int :rtype: int """ left,right=1,n while 1: mid = (left + right)//2 if guess(mid) == 0: return mid elif guess(mid) == -1: right = mid - 1 elif guess(mid) == 1: left = mid + 1
也有大神的做法,现在还看不懂,学习学习
def guessNumber(self, n): class C: __getitem__ = lambda _, i: -guess(i) return bisect.bisect(C(), -1, 1, n)
转载地址:http://nprbb.baihongyu.com/