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'll tell you whether the number is higher or lower.
You call a pre-defined API
guess(int num)
which returns 3 possible results (-1
, 1
, or 0
):-1 : My number is lower1 : My number is higher0 : Congrats! You got it!
Example:
n = 10, I pick 6.Return 6.
Approach : Use binary search to find the given number.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | // Forward declaration of guess API. // @param num, your guess // @return -1 if my number is lower, 1 if my number is higher, otherwise return 0 int guess(int num); class Solution { public: int guessNumber(int n) { int low = 1, high = n, mid; while(low <= high){ mid = low + ((high - low) >> 1); if(guess(mid) == 0){ return mid; }else if(guess(mid) == -1){ high = mid - 1; }else{ low = mid + 1; } } return -1; } }; |
0 comments:
Post a Comment