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
My Accepted Solution
n = number
Time complexity: O($log_2n$)
Space complexity: O(1)
class Solution
{
public:
// int guessNumber(int n)
int guessNumber(int number)
{
long result = (1 + (long)number) / 2;
for(long left = 0, right = number; guess(result); result = (left + right) / 2)
{
guess(result) < 0 ? right = result - 1 : left = result + 1;
}
return result;
}
};