实现 int sqrt(int x)
函数,计算并返回 x 的平方根。
样例
sqrt(3) = 1
sqrt(4) = 2
sqrt(5) = 2
sqrt(10) = 3
挑战
O(log(x))
采用二分法进行处理,重点是要注意不要越界。为了加快计算速度,可以从一半开始计算。
代码如下:
class Solution {
public:
/*
* @param x: An integer
* @return: The sqrt of x
*/
//采用二分法寻找
int sqrt(int x) {
int low = 0,hig = x/2+1;
while(low<=hig){
long long mid = low+(hig-low)/2;
if(mid*mid < x)low = mid+1;
if(mid*mid > x)hig = mid-1;
if(mid*mid == x)return mid;
}
return hig;//返回高位值
}
};