Guess the Hidden Number
Problem
Pick a hidden integer between 1 and n. An oracle guess(x) answers: 0 if correct, -1 if too high, +1 if too low. Find the hidden number with the minimum number of guesses by bisecting the range.
Input
n = 10, hidden = 6Output
6Guess 5 (low), 8 (high), 6 (correct).
def guess_number(n, guess):
l, r = 1, n
while l <= r:
m = (l + r) // 2
r2 = guess(m)
if r2 == 0: return m
if r2 < 0: r = m - 1
else: l = m + 1
return -1
function guessNumber(n, guess) {
let l = 1, r = n;
while (l <= r) {
const m = (l + r) >> 1;
const r2 = guess(m);
if (r2 === 0) return m;
if (r2 < 0) r = m - 1; else l = m + 1;
}
return -1;
}
class Solution {
public int guessNumber(int n) {
int l = 1, r = n;
while (l <= r) {
int m = (l + r) >>> 1;
int r2 = guess(m);
if (r2 == 0) return m;
if (r2 < 0) r = m - 1; else l = m + 1;
}
return -1;
}
}
int guessNumber(int n) {
int l = 1, r = n;
while (l <= r) {
int m = (l + r) / 2;
int r2 = guess(m);
if (r2 == 0) return m;
if (r2 < 0) r = m - 1; else l = m + 1;
}
return -1;
}