LeetCode刷題 374 猜數字大小

2021-10-10 09:01:11 字數 1093 閱讀 6505

猜數字遊戲的規則如下:

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

示例 2:

輸入:n = 1, pick = 1

輸出:1

示例 3:

輸入:n = 2, pick = 1

輸出:1

示例 4:

輸入:n = 2, pick = 2

輸出:2

1 <= n <= 231 - 1

1 <= pick <= n

這個題詐一看,還沒看懂。仔細讀題後,發現是常規的二分法。

/** 

* 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);

*/public class solution extends guessgame else if(k<0)else

}return -1;

}}

這裡有個問題,關於中間索引的獲取,我一般寫成int mid = (left+right)/2;這裡使用加法可能會大小越界,寫成int mid=left +(right-left)/2會好點。

參考:

LeetCode 374 猜數字大小

選擇乙個數字。你需要猜我選擇了哪個數字。每次你猜錯了,我會告訴你這個數字是大了還是小了。你呼叫乙個預先定義好的介面guess int num 它會返回 3 個可能的結果 1,1或0 1 我的數字比較小 1 我的數字比較大 0 恭喜!你猜對了!示例 n 10,我選擇 6.返回 6.個人感覺這裡的小和大...

leetcode 374 猜數字大小

題面 我們正在玩乙個猜數字遊戲。遊戲規則如下 我從 1 到 n 選擇乙個數字。你需要猜我選擇了哪個數字。每次你猜錯了,我會告訴你這個數字是大了還是小了。你呼叫乙個預先定義好的介面 guess int num 它會返回 3 個可能的結果 1,1 或 0 1 我的數字比較小 預設的值小 1 我的數字比較...

LeetCode374 猜數字大小

1.題目描述 我們正在玩乙個猜數字遊戲。遊戲規則如下 我從 1 到 n 選擇乙個數字。你需要猜我選擇了哪個數字。每次你猜錯了,我會告訴你這個數字是大了還是小了。你呼叫乙個預先定義好的介面 guess int num 它會返回 3 個可能的結果 1,1 或 0 1 我的數字比較小 1 我的數字比較大 ...