374. 猜數字大小 力扣 二分 簡單卻易錯
阿新 • • 發佈:2021-06-14
題目描述:
猜數字遊戲的規則如下:
每輪遊戲,我都會從1到n 隨機選擇一個數字。 請你猜選出的是哪個數字。
如果你猜錯了,我會告訴你,你猜測的數字比我選出的數字是大了還是小了。
你可以通過呼叫一個預先定義好的介面 int guess(int num) 來獲取猜測結果,返回值一共有 3 種可能的情況(-1,1或 0):
-1:我選出的數字比你猜的數字小 pick < num
1:我選出的數字比你猜的數字大 pick > num
0:我選出的數字和你猜的數字一樣。恭喜!你猜對了!pick == num
返回我選出的數字。
示例 1:
輸入:n = 10, pick = 6 輸出:6
易錯點:
1、int + int > int,所以需要 long long計算;
2、一定要有返回結果,如果開始i==j,就不會進入while語句,就會沒有return,所以在最外面需要return
題源:https://leetcode-cn.com/problems/guess-number-higher-or-lower/
/** * Forward declaration of guess API. * @param num your guess * @return -1 if num is lower than the guess number * 1 if num is higher than the guess number * otherwise return 0 * int guess(int num);*/ class Solution { public: int guessNumber(int n) { long long i,j; i=1; j=n; while(i<j) { int mid=(int)((i+j)/2); int judge=guess(mid); if (judge < 0) j=mid-1; else if (judge == 0) return mid; else i=mid+1; }return i; } };