LeetCode*374. Guess Number Higher or Lower

LeetCode題目鏈接

注意:凡是以英文出現(xiàn)的,都是題目提供的,包括答案代碼里的前幾行。

題目:

We are playing the Guess Game. The game is as follows:

I pick a number from 1 to n. You have to guess which number I picked.

Every time you guess wrong, I'll tell you whether the number is higher or lower.

You call a pre-defined API guess(int num) which returns 3 possible results (-1, 1, or 0):

-1 : My number is lower
1 : My number is higher
0 : Congrats! You got it!

Example:

n = 10, I pick 6.

Return 6.

希望看到這里的同學(xué)能夠先思考,最好是能夠自己寫具體的實(shí)現(xiàn),有更好的答案可以直接在下面評(píng)論。

答案:

// 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 begin = 0;
        int end = n;
        int num, res;
        while (begin <= end) {
            num = (end - begin)/2 + begin;  // 注意:這里不能用num = (end + begin)/2
            res = guess(num);
            if (res == 0) {
                return num;
            }
            else if (res == 1) {
                begin = num + 1;
            }
            else {
                end = num - 1;
            }
        }
        return 0;
    }
};

解析:

不能用 num = (end + begin) / 2,是因?yàn)椴皇撬械臏y(cè)試都能通過,這里需要考慮數(shù)字過大導(dǎo)致的溢出,如果給出的數(shù)字num很大,那么 end + begin超出int類型的范圍。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,922評(píng)論 0 33
  • LeetCode 374 Guess Number Higher or Lower ===============...
    ShuiLocked閱讀 206評(píng)論 0 0
  • 寫作作為一種思想的表達(dá)方式,是必不可少的,通過寫作,記錄下我們經(jīng)過思考的某些觀點(diǎn)結(jié)論。 人的大腦每時(shí)每刻都在產(chǎn)生新...
    龐新閱讀 501評(píng)論 1 2
  • 朋友給了我一個(gè)新的外號(hào),“望渣石”。我和我的前男友小學(xué)四年級(jí)時(shí)就認(rèn)識(shí)了。他高中給我告白的時(shí)候是這樣說的,“從我走進(jìn)...
    昆廷閱讀 518評(píng)論 0 1
  • 今天教孩子們一個(gè)新游戲,叫剪刀石頭布,怎么個(gè)新法呢?游戲中,出石頭要揮動(dòng)雙臂像天鵝,出布要雙手向后互握胳膊伸直做尾...
    徐沛苧閱讀 259評(píng)論 0 0

友情鏈接更多精彩內(nèi)容