leetcode No374 猜数字大小 java
Posted 短腿Cat
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode No374 猜数字大小 java相关的知识,希望对你有一定的参考价值。
题目
题解
这道题和昨天的题一样都是二分法,有两个要注意的点在于:
- 注意计算left = mid + 1 而不是 left = mid,这样方便后续操作,如判断left > right 的时候退出循环。
- 注意计算中点的时候数值不要超出整型范围,要用left + (right - left) / 2 而不是 ( left + right ) / 2
上述两细节点如果有不太清楚的可以看看我昨天类似题目写的详细解读:278. 第一个错误的版本 - breakman
由于这里如果返回0的话说明刚好是答案,因此我在检测到0的时候直接返回结果就可以。
代码如下:
/**
* Forward declaration of guess API.
* @param num your guess
* @return -1 if num is lower than the guess number
* 1 if num is higher than the guess number
* otherwise return 0
* int guess(int num);
*/
public class Solution extends GuessGame {
public int guessNumber(int n) {
int left = 1, right = n;
int mid;
//当right大于left的时候一直循环,当left大于right的时候退出循环
while (right >= left) {
mid = left + (right - left) / 2;
int r = guess(mid);
if (0 == r) {
return mid;
} else if (r == 1) {
left = mid + 1;
} else {
right = mid;
}
}
return 0;
}
}
一起刷题的朋友们一起加油,顺便端午节快乐~
以上是关于leetcode No374 猜数字大小 java的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode之二分法专题-374. 猜数字大小(374. Guess Number Higher or Lower)