Description:
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 :
- Input: n = 10, pick = 6
- Output: 6
题意:模拟一个猜数字的游戏,给定一个范围[1,n],猜测在这个范围内的一个数字,每一次的猜测都会给出你所猜的是大了,小了,还是正确找到那个数字,返回所要猜测的那个数字;
解法:根据题意相当于让我们实现二分查找,每次猜测一个数字后判断是否是要找的那个数,或者是偏大了,或者是偏小了,总之,根据guess函数的返回值,我们来实现二分查找;
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) {
long low = 1;
long high = n;
while (low <= high) {
long mid = (low + high) / 2;
int gus = guess((int)mid);
if (gus == 0) return (int)mid;
else if (gus == -1) high = mid - 1;
else low = mid + 1;
}
return -1;
}
}