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)
some consideration
- ** pay attention to compare order**
- ** think, how to safely find average of two numbers?**
// 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 loopGuess(int s, int e){
int m = s / 2 + e / 2 + (s & e & 1);
int g = guess(m);
if(g > 0) return loopGuess(m + 1, e);
else if(g < 0) return loopGuess(s, m - 1);
else return m;
}
int guessNumber(int n) {
return loopGuess(1, n);
}
};