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);
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容