实现 int sqrt(int x)
函数,计算并返回 x 的平方根。
样例
sqrt(3) = 1
sqrt(4) = 2
sqrt(5) = 2
sqrt(10) = 3
挑战
O(log(x))
class Solution {
/*** @param x: An integer
* @return: The sqrt of x
*/
public int sqrt(int x) {
// write your code here
if (x<0){
return -1;//-1代表错误
}
int left = 1;//通过二分法 right边界用X/2+1稍微放大
int right = x/2 + 1;
int mid;
int res=1;
int tmp;
if (x<2) return x;
while(left<=right){
mid =(right + left)/2;//tmp 和mid之间一定包含着所求结果
tmp = x/mid;
if(tmp>mid){
left = mid + 1;
res = mid;
}else if(tmp<mid){
right = mid - 1;
}else
return mid;
}
return res;
}
}
【略有疑问!~~~~还要多多研究算法】