首页 > 代码库 > LeetCode 374 Guess Number Higher or Lower

LeetCode 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 (-11, 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.

 

思路:

二分查找即可,注意中间数值不能溢出,因此(high + low) / 2写成low + (high - low) / 2。

 

解法:

 1 /* The guess API is defined in the parent class GuessGame. 2    @param num, your guess 3    @return -1 if my number is lower, 1 if my number is higher, otherwise return 0 4       int guess(int num);  5 */ 6  7 public class Solution extends GuessGame 8 { 9     public int guessNumber(int n)10     {11         int low = 1;12         int high = n;13         int middle, guessOutcome;14 15         while(low <= high)16         {17             middle = low + (high - low) / 2;18             guessOutcome = guess(middle);19 20             if(guessOutcome == 1)21                 low = middle + 1;22             else if(guessOutcome == -1)23                 high = middle - 1;24             else25                 return middle;26         }27 28         return 0;29     }30 }

 

LeetCode 374 Guess Number Higher or Lower