1. 程式人生 > 其它 >374. 猜數字大小 力扣 二分 簡單卻易錯

374. 猜數字大小 力扣 二分 簡單卻易錯

題目描述:

猜數字遊戲的規則如下:

每輪遊戲,我都會從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; } };