美文网首页LeeCode题目笔记
2019-12-04 猜数字大小

2019-12-04 猜数字大小

作者: Antrn | 来源:发表于2019-12-04 15:47 被阅读0次

    我们正在玩一个猜数字游戏。 游戏规则如下:
    我从 1 到 n 选择一个数字。 你需要猜我选择了哪个数字。
    每次你猜错了,我会告诉你这个数字是大了还是小了。
    你调用一个预先定义好的接口 guess(int num),它会返回 3 个可能的结果(-1,1 或 0):

    -1 : 我的数字比较小
    1 : 我的数字比较大
    0 : 恭喜!你猜对了!
    示例 :

    输入: n = 10, pick = 6
    输出: 6
    

    典型迭代二分法。想起了上次轰趴时候玩的猜数字hhh...

    C++1
    // 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) {
            long start = 1;
            long mid = (start+n)/2;
            long rmid = guess((start+n)/2);
            while(rmid != 0){
                if(rmid == 1){
                    start = mid+1;
                }else if(rmid == -1){
                    n = mid-1;
                }
                mid = (start+n)/2;
                rmid = guess(mid);
            }
            return mid;
        }
    };
    

    相关文章

      网友评论

        本文标题:2019-12-04 猜数字大小

        本文链接:https://www.haomeiwen.com/subject/exjlgctx.html