可怕的同时考数值溢出和二分的酱油题之一,常在各种小公司的笔试中充当大题来给你好看。。。
题意很简单,在《二分查找综述》中有描述。
重点:使用简单粗暴的long long来避免溢出,二分均方根的答案来得到准确解。
当然这里的溢出不止是相乘的溢出,还有第六行那段代码的溢出,每次都会有几个解决问题的斗士牺牲在这里。。。
class Solution {
public:
int mySqrt(int x) {
long long a = , b = x;
while(a <= b ){
long long mid = a + (b - a) /;
if(mid * mid == x) return mid;
if(mid * mid < x ) a = mid + ;
else b = mid - ;
}
return (int)b;
}
};
这里已经给出了两种题目的解法,相信大家对于二分查找有了一个比较清晰的认识,可以写一个关于二分查找的模板了,但是懒惰楼主是不会写的。。。