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;
    }
};
comments powered by Disqus