题目描述:
从1~n中,随便的拿出一个数字,你来猜测。
提示
提供一个guess(int num)的api,针对猜测的数字,返回三个数值。0,-1,1
- 0;猜中返回num
- -1:比猜测的数值小
- 1:比猜测的数值大
n = 10, I pick 6.
Return 6.
原文描述: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!
n = 10, I pick 6.
Return 6.
思路分析:- 明显是二分法的应用,关于二分法,看我之前的一片博客,讲的比较详细,链接如下:
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) {
int L = 1,R = n;
while(L <= R){
int mid = L + ((R - L) >> 1);
int res = guess(mid);
if(res == 0) return mid;
else if(res == 1) L = mid + 1;
else R = mid - 1;
}
return L;
}
}
更多leetcode题目,请看我的leetcode专栏。:
点击查看更多内容
4人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦