Leetcode-374. 猜數字大小
阿新 • • 發佈:2019-01-31
我們正在玩一個猜數字遊戲。 遊戲規則如下:
我從 1 到 n 選擇一個數字。 你需要猜我選擇了哪個數字。
每次你猜錯了,我會告訴你這個數字是大了還是小了。
你呼叫一個預先定義好的介面 guess(int num)
,它會返回 3 個可能的結果(-1
,1
或 0
):
-1 : 我的數字比較小 1 : 我的數字比較大 0 : 恭喜!你猜對了!
示例:
n = 10, 我選擇 6. 返回 6.
解答:
// Forward declaration of guess API. // @param num, your guess // @return -1 if my number is lower, 1 if my number is higher, otherwise return 0 int guess(int num); class Solution { public: int guessNumber(int n) { int left = 1; int right = n; int mid; while(left<=right){ mid = left + (right-left)/2; if(guess(mid)==0) return mid; else if(guess(mid)==1) left = mid+1; else if(guess(mid)==-1) right = mid-1; } return mid; } };