374. Guess Number Higher or Lower*
https://leetcode.com/problems/guess-number-higher-or-lower/
题目描述
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 :
Input: n = 10, pick = 6
Output: 6
C++ 实现 1
内部 pick
了一个 number, 提供的 API 用来判断这个 number 是否比当前我们猜测的元素 mid
相等. 如果大, 则返回 1
, 相等则返回 0
, 小的话则返回 -1
.
/**
* Forward declaration of guess API.
* @param num your guess
* @return -1 if num is lower than the guess number
* 1 if num is higher than the guess number
* otherwise return 0
* int guess(int num);
*/
class Solution {
public:
int guessNumber(int n) {
int l = 1, r = n;
while (l <= r) {
int mid = l + (r - l) / 2;
if (guess(mid) == 0) return mid;
else if (guess(mid) == 1) l = mid + 1;
else r = mid - 1;
}
return -1;
}
};