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,猜小时提醒-1,猜对时提醒0,问:在猜出来的数字是多少?
思路:按照二分法的顺序来猜,根据提示的大小选择左半部分还是右半部分。
java:
public class Solution extends GuessGame {
public int guessNumber(int n) {
int left=1;
int right=n;
while(left<=right)//按照二分法来猜
{
int number=left+(right-left)/2;
count=guess(number);
if(count==0)
return number;//猜对直接返回
else if(count==1)//猜大时,选择左半部分
left=number+1;
else {
right=number-1;//猜小时选择右半部分
}
}
return -1;
}
}