编辑
Guess Number Higher or Lower
本文访问次数:0
  1. 1. 问题链接
  2. 2. 问题描述
  3. 3. 解决方法

问题链接

Guess Number Higher or Lower | LeetCode OJ

问题描述

我们进行猜数字的游戏. 游戏规则如下:
我从1到n里选择一个数字,你来猜我选择的哪个数字。
如果你猜错了的话,我会告诉你我选择的数字比你猜的数字更大还是更小。
使用预先定义好的方法guess(int num),这个方法返回三个数字-1, 1, 或者 0,分别表示:

-1 : 我选择的数字比你猜的数字更小
 1 : 我选择的数字比你猜的数字更大
 0 : 恭喜你,你猜中了!

举例说明:

n = 10,我选择了6,
那么你的方法应该返回6。

解决方法

给出我的解决方法,语言为Java

/* The guess API is defined in the parent class GuessGame.
   @param num, your guess
   @return -1 if my number is lower, 1 if my number is higher, otherwise return 0
      int guess(int num); */

public class Solution extends GuessGame {
    public int guessNumber(int n) {
        if(n == 1){
            return 1;
        }
        else if(n == 2){
            if(guess(1) == 0){
                return 1;
            }
            else{
                return 2;
            }
        }
        else{
            int start = 1;
            int middle = middleNumber(start,n);
            int result;
            while((result = guess(middle)) != 0){
                if(result == 1){
                    start = middle + 1;
                }
                else{
                    n = middle - 1;
                }
                middle = middleNumber(start,n);
            }
            return middle;
        }
    }
    public int middleNumber(int start,int end){
        return (end-start)/2 + start;
    }
}
没有任何评论