LeetCode 題解 | 374. 猜數字大小 (二分 C++)

來源:374. 猜數字大小
在這裏插入圖片描述

思路

猜數字遊戲的本質就是個二分,題目會有一個數 pick,然後你在一個區間[1, n] 中二分查找這個數,由於你實現不知道 pick 是多少,所以需要出題人告訴你這個數大了還是小了,還是猜中了(guess 函數的功能),這部分相當於二分中的 check 函數。

代碼

/** 
 * Forward declaration of guess API.
 * @param  num   your guess
 * @return 	     -1 if num(pick) is lower than the guess number
 *			      1 if num(pick) is higher than the guess number
 *               otherwise return 0
 * int guess(int num);
 */

// “我的數字”是指題目一開始指定的pick數
class Solution {
public:
    int guessNumber(int n) {
        int l = 1, r = n;
       
        while (l < r) {
            int mid = l + 0ll + r >> 1;
            if (guess(mid) == 0) return mid;

            if (guess(mid) == -1) r = mid;
            else if (guess(mid) == 1) l = mid + 1;
        }
        
        return l;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章