讨论/题目交流/关于LeetCode374题的一点疑惑。/
关于LeetCode374题的一点疑惑。

题目如下:
我们正在玩一个猜数字游戏。 游戏规则如下:
我从 1 到 n 选择一个数字。 你需要猜我选择了哪个数字。
每次你猜错了,我会告诉你这个数字是大了还是小了。
你调用一个预先定义好的接口 guess(int num),它会返回 3 个可能的结果(-1,1 或 0):

-1 : 我的数字比较小
1 : 我的数字比较大
0 : 恭喜!你猜对了!
示例 :

输入: n = 10, pick = 6
输出: 6

我给出的代码如下:

public class Solution extends GuessGame {
    public int guessNumber(int n) {
        int left = 1;
        int right = n;
        while (left < right) {
          int mid = (left + right) >>> 1;
          if (guess(mid) == -1) {
            left = mid + 1;
          } else {
            right = mid;
          }
        }
      return left;
    }
}

测试数据为n=10,pick=6

  1. 系统提示我的代码输出为1
  2. 我本地运行输出为6
  3. 唯一不同点在于:本地测试时,guess方法是我自己写的。
    以下是我自己编写的guess方法。
    private int guess(int i) {
		return i < 6 ? -1 : i == 6 ? 0 : 1;
	}

希望能指出问题所在,刚开始刷题,很多不懂的地方,谢谢大家。

展开讨论
ccc发起于 2019-09-24
最近编辑于 2019-09-24

你 guess 的理解弄反了。。。这个“我”,指的是电脑 guess 程序的number,不是你猜的 number。
还有你的程序应该分 3 种情况比较好,建议参考官方题解。
https://leetcode-cn.com/problems/guess-number-higher-or-lower/solution/cai-shu-zi-da-xiao-by-leetcode/