374. Guess Number Higher or Lower
1. Description
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 will tell you whether the number I picked is higher or lower than your guess.
You call a pre-defined API int guess(int num), which returns 3 possible results:
- -1: The number I picked is lower than your guess (i.e. pick < num).
- 1: The number I picked is higher than your guess (i.e. pick > num).
- 0: The number I picked is equal to your guess (i.e. pick == num).
Return the number that I picked.
2. Example
Example 1
Input: n = 10, pick = 6
Output: 6
Example 2
Input: n = 1, pick = 1
Output: 1
Example 3
Input: n = 2, pick = 1
Output: 1
Example 4
Input: n = 2, pick = 2
Output: 2
3. Constraints
- 1 <= n <= $2^{31} - 1$
- 1 <= pick <= n
4. Solutions
Binary Search
Time complexity: O(logn)
Space complexity: O(1)
class Solution {
public:
int guessNumber(int n) {
int left = 1, right = n;
while (left < right) {
int middle = left + (right - left) / 2;
int guess_result = guess(middle);
if (guess_result < 0) {
right = middle - 1;
} else if (guess_result == 0) {
return middle;
} else {
left = middle + 1;
}
}
return left;
}
};