码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 374 Guess Number Higher or Lower

时间:2016-09-03 21:10:38      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:

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             else
25                 return middle;
26         }
27 
28         return 0;
29     }
30 }

 

LeetCode 374 Guess Number Higher or Lower

标签:

原文地址:http://www.cnblogs.com/wood-python/p/5837931.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!