Last updated: Nov 27, 2022
Difficulty : easy
Runtime : 79 ms Faster than 75.62 %
Memory : 41.9 mb Lesser than 40.97 %

374. 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 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 three possible results:

  • -1: Your guess is higher than the number I picked (i.e. num > pick).
  • 1: Your guess is lower than the number I picked (i.e. num < pick).
  • 0: your guess is equal to the number I picked (i.e. num == pick).

Return the number that I picked.

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

Constraints:

  • 1 <= n <= 231 - 1
  • 1 <= pick <= n

Solution:

/**
 * Forward declaration of guess API.
 * @param {number} num   your guess
 * @return 	     -1 if num is higher than the picked number
 *			      1 if num is lower than the picked number
 *               otherwise return 0
 * var guess = function(num) {}
 */

/**
 * @param {number} n
 * @return {number}
 */
var guessNumber = function(n) {
  if(guess(n) == 0) return n;
  let newPick = Math.floor(n/2);
  let start = 1;
  let end = n;
  while(guess(newPick) != 0){
    if(guess(newPick) == -1){
       end = newPick;
    } else {
      start = newPick;
    }
    newPick = Math.floor((start+end)/2);
  }
  return newPick;
};