Implement int sqrt(int x).
Compute and return the square root of x.
Analysis:In an interview, they expected the solution is using binary search, not Newton's Method.
Java
public int sqrt(int x) {
long high = x;
long low = 0;
if(x<=0) return 0;
if(x==1) return 1;
while(high-low>1){
long mid = low+(high-low)/2;
if(mid*mid<=x)
low = mid;
else {
high = mid;
}
}
return (int) low;
}C++
int sqrt(int x) {
unsigned long long begin =0;
unsigned long long end = (x+1)/2;
unsigned long long mid;
unsigned long long temp;
while(begin<end){
mid = begin+(end-begin)/2;
temp = mid*mid;
if(temp == x) return mid;
else if(temp<x) begin = mid+1;
else end = mid-1;
}
temp = end*end;
if(temp>x)
return end-1;
else
return end;
}newton method
int sqrt(int x) {
if(x==0)
return 0;
double pre;
double cur =1;
do{
pre = cur;
cur = x/(2*pre)+ pre/2.0;
}while(abs(cur-pre)>0.0000001);
return int(cur);
}
整数平方根的二分查找实现

本文介绍了一种使用二分查找算法来计算整数平方根的方法,并提供了Java和C++两种语言的实现代码。不同于使用牛顿迭代法,此方法更适用于面试场合。
767

被折叠的 条评论
为什么被折叠?



