This is my LeetCode exercise.
You can see all question I did here.
leetcode
easy
Binary Search
Interactive
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
).Input: n = 10, pick = 6
Output: 6
Input: n = 1, pick = 1
Output: 1
Input: n = 2, pick = 1
Output: 1
/**
* Forward declaration of guess API.
* @param 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
* int guess(int num);
*/
int guessNumber(int n){
if(n == 1)
return 1;
int top = n, num = n / 2, down = 1, guessResult = guess(num), tmp;
while(1){
//Equal
if(guessResult == 0)
return num;
//Higher
if(guessResult == -1){
top = num;
num = floor(num / 2.0 + down / 2.0);
}
//Lower
if(guessResult == 1){
down = num;
num = ceil(num / 2.0 + top / 2.0);
}
guessResult = guess(num);
}
}
Space | Time |
---|---|
$O(1)$ | $O(\log(n))$ |