LeetCode-374-猜數(shù)字大小

題目描述:猜數(shù)字游戲的規(guī)則如下:
每輪游戲,我都會(huì)從 1 到 n 隨機(jī)選擇一個(gè)數(shù)字。 請(qǐng)你猜選出的是哪個(gè)數(shù)字。
如果你猜錯(cuò)了,我會(huì)告訴你,你猜測(cè)的數(shù)字比我選出的數(shù)字是大了還是小了。
你可以通過調(diào)用一個(gè)預(yù)先定義好的接口 int guess(int num) 來獲取猜測(cè)結(jié)果,返回值一共有 3 種可能的情況(-1,1 或 0):
-1:我選出的數(shù)字比你猜的數(shù)字小 pick < num
1:我選出的數(shù)字比你猜的數(shù)字大 pick > num
0:我選出的數(shù)字和你猜的數(shù)字一樣。恭喜!你猜對(duì)了!pick == num
示例說明請(qǐng)見LeetCode官網(wǎng)。
來源:力扣(LeetCode) ??
鏈接:https://leetcode-cn.com/problems/guess-number-higher-or-lower/ ??
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
解法一:二分查找法
典型的二分查找問題,首先low初始值為1,high初始值為num,二分查找過程如下:
循環(huán)的前提是low不大于high;
然后mid的值為
low + (high - low) / 2
,然后調(diào)用guess(num)
方法進(jìn)行判斷;如果返回-1,則high的值置為
mid - 1
,然后進(jìn)行下一輪處理;如果返回1,則low的值置為
mid + 1
,然后進(jìn)行下一輪處理;如果返回0,則返回mid值,該值即為選出的數(shù)字。
【每日寄語】 總之歲月漫長,然而值得等待。