374

我们正在玩一个猜数字游戏。 游戏规则如下:

我从 1 到 n 选择一个数字。 你需要猜我选择了哪个数字。

每次你猜错了,我会告诉你这个数字是大了还是小了。

你调用一个预先定义好的接口 guess(int num),它会返回 3 个可能的结果(-1,1 或 0):

-1 : 我的数字比较小

1 : 我的数字比较大

0 : 恭喜!你猜对了!

示例 :

输入: n = 10, pick = 6

输出: 6

思路:二分查找。

int guess(int num);

class Solution {

public:

    int guessNumber(int n) {

       int l = 1;

       int r = n;

       while(l <= r)

       {

            int mid = l + (r - l) / 2;

           // cout << mid << ' ';

            //int b = guess(mid);

            //cout << b << ' ';

            if(guess(mid) == 0)

                return mid;

            else if(guess(mid) < 0)

                r = mid - 1;

            else if(guess(mid) > 0)

                l = mid + 1;

       }

       return -1;

    }

};

你可能感兴趣的:(374)