题目要求: 374. 猜数字大小
欢迎关注微信公众号:【没伞的孩子拼命跑】 和我的小伙伴们一块打卡吧。
题目解析
今天的题目才真真正正的是二分题目的例题,这估计也是你们学二分的时候的老师给你们讲的例题。但是我有一个问题,大家做完题之后,可以在群里互相交流一下。我们最初始的二分算法要求给定是数组必须是有序的,但是我想问一个问题,二分算法的应用一定是在有序的数组中吗?
解题思路
这周是二分周,这个题就没有什么解题思路了,就是最基本的二分方法,需要注意的是,这样写的话不会因为计算中间数超出数据表示范围,就一般不要这样写,这样的话在计算(l+r)的时候很容易超出int型的数据所能表示的范围。
代码和详细注释如下
//C++题解
/**
* 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);
*/
class Solution {
public:
int guessNumber(int n) {
int l = 1;
int r = n;
while(l<r)
{
int mid = l+(r-l)/2;
if(guess(mid)==0)return mid;
else if(guess(mid) == 1)l = mid+1;
else r = mid-1;
}
return l;
}
};
通过情况
欢迎关注微信公众号:【没伞的孩子拼命跑】 和我的小伙伴们一块打卡吧。