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
Was this helpful?