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;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章