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 3 possible results:
-1: The number I picked is lower than your guess (i.e.pick < num).1: The number I picked is higher than your guess (i.e.pick > num).0: The number I picked is equal to your guess (i.e.pick == num).
Return the number that I picked.
Example 1:
Input: n = 10, pick = 6
Output: 6
Example 2:
Input: n = 1, pick = 1
Output: 1
Example 3:
Input: n = 2, pick = 1
Output: 1
Example 4:
Input: n = 2, pick = 2
Output: 2
Constraints:
1 <= n <= 231 - 11 <= pick <= n
题意:猜数字游戏。
解法 二分
/**
* Forward declaration of guess API.
* @param num your guess
* @return -1 if num is lower than the guess number
* 1 if num is higher than the guess number
* otherwise return 0
* int guess(int num);
*/
class Solution {
public:
int guessNumber(int n) {
int l = 0, h = n;
while (l <= h) {
int m = l + (h - l) / 2, t = guess(m);
if (t == 0) return m;
else if (t == -1) h = m - 1;
else l = m + 1;
}
return 0;
}
};
运行效率如下:
执行用时:0 ms, 在所有 C++ 提交中击败了100.00% 的用户
内存消耗:5.7 MB, 在所有 C++ 提交中击败了82.14% 的用户

这篇博客介绍了一个猜数字游戏的解决方案,利用二分搜索算法提高猜测效率。在给定1到n的范围内,目标是猜出预设的数字。每次猜测后,根据API返回的提示(小于、大于或等于)调整搜索范围,直至找到正确答案。代码实现中,二分搜索在C++环境中运行,达到了0ms的执行时间和5.7MB的内存消耗。
728

被折叠的 条评论
为什么被折叠?



