[LeetCode-Easy]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):

 -1 : My number is lower
  1 : My number is higher
  0 : Congrats! You got it!

Example:

 n = 10,I pick 6.
  Return 6.

实力吐槽!这题其实本质上非常简单,简单的不要不要的,但是看懂题实在太费劲了,以致于笔者花了一个小时!是一个小时!!才把这题的“你、我”这俩人称看明白!!

!!!这就是个二分查找!!!

不好意思一不小心师太了~~这题确实理解上容易出问题。接下来好好说思路,避免大家也因为题意影响到编程。

思路:

这题的意思是,我们两个人玩猜数游戏。我从1到n里面选择一个数字,你来猜。每次你猜错的时候呢,我就会告诉你,你猜大了,或者猜小了,直到你猜对为止!类似于一些真人秀设置的游戏规则。。。
注意!这里他告诉我们他已经写好了一个接口guess(int num),有三个返回值:这里我好好翻译一下
返回-1,代表我们选的数字比对方猜的
返回** 1,代表我们选的数字比对方猜的大**
返回** 0**,代表你猜对了
还有!他给我们准备的代码里:guessNumber(int n),这个n是我们设置的最大数,不是他猜的,是让我们设置好最大数,他猜数字,比如他猜了6,那结果就需要返回6,不过中间要有判断的过程。

好的我们整理一下我们要做的事情:我们设置最大数字,对方猜,我们只能给他反馈他猜大了或者猜小了。那他猜的过程是什么样的呢?那就要由我们来编译了!这里推荐使用折半的方法。我在代码里尽量设置清楚备注。

  public class Solution extends GuessGame {
  public int guessNumber(int n) {
      //如果设置的最大数字他直接猜对了,那就可以直接返回这个最大数了
      if(guess(n)==0) {
          return n;
      }
      int low = 1;
      int high = n;
      while(low

}

你可能感兴趣的:([LeetCode-Easy]374. -猜数Guess Number Higher or Lower字大小)