0374. Guess Number Higher or Lower

https://leetcode.com/problems/guess-number-higher-or-lower

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.

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

Constraints:

  • 1 <= n <= 231 - 1

  • 1 <= pick <= n

ac

/* The guess API is defined in the parent class GuessGame.
   @param num, your guess
   @return -1 if my number is lower, 1 if my number is higher, otherwise return 0
      int guess(int num); */

public class Solution extends GuessGame {
    public int guessNumber(int n) {
        // edge cases

        int l = 1, r = n;
        while (l + 1 < r) {
            int m = l + (r - l) / 2;
            int res = guess(m);
            if (res == 0) return m;
            if (res == 1) {
                l = m;
            } else {
                r = m;
            }
        }

        return guess(l) == 0 ? l : r;
    }
}

Last updated