当前位置:   article > 正文

374. 猜数字大小_猜猜密码使问号中数字与左边数字大小一致

猜猜密码使问号中数字与左边数字大小一致

难度:简单

猜数字游戏的规则如下:

  • 每轮游戏,我都会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。
  • 如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。

你可以通过调用一个预先定义好的接口 int guess(int num) 来获取猜测结果,返回值一共有 3 种可能的情况(-11 或 0):

  • -1:我选出的数字比你猜的数字小 pick < num
  • 1:我选出的数字比你猜的数字大 pick > num
  • 0:我选出的数字和你猜的数字一样。恭喜!你猜对了!pick == num

返回我选出的数字。

示例 1:

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

示例 2:

输入:n = 1, pick = 1
输出:1

示例 3:

输入:n = 2, pick = 1
输出:1

示例 4:

输入:n = 2, pick = 2
输出:2

提示:

  • 1 <= n <= 231 - 1
  • 1 <= pick <= n

代码:

  1. /**
  2. * Forward declaration of guess API.
  3. * @param num your guess
  4. * @return -1 if num is lower than the guess number
  5. * 1 if num is higher than the guess number
  6. * otherwise return 0
  7. * int guess(int num);
  8. */
  9. public class Solution extends GuessGame {
  10. //二分
  11. public int guessNumber(int n) {
  12. int left = 1, right = n;
  13. while (left <= right) {
  14. int mid = left + (right - left) / 2;
  15. if (guess(mid) == 0)
  16. return mid;
  17. else if (guess(mid) > 0)
  18. left = mid + 1;
  19. else
  20. right = mid - 1;
  21. }
  22. return left;
  23. }
  24. }

ps:使用 int mid = left + (right - left) / 2; 而不是int mid =  (right + left) / 2;是为了

防止left+right整数溢出的情况

 

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读