374. Guess Number Higher or Lower

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);
    }
};

你可能感兴趣的:(374. Guess Number Higher or Lower)