Implement int sqrt(int x)
.
Compute and return the square root of x.
先举几个例子:
1的平方根是1
1的平方根是1
2的平方根是1
3的平方根是1
4的平方根是2
所以,当x>=1时,它的平方根应该在[1, x/2+1]内,
当x>=2时,它的平方根在[1,x/2]内,
这两个结论都可以构造二分查找来“试”结果,以第二种结论为例:
int sqrt(int x){
if(x<=0)
return 0;
if(x==1)
return 1;
int i=1;
int j=x/2;
while(i<=j){
int k=i+(j-i)/2;
long long m=((long long)k*(long long)k);
if(m==x)
return k;
else if(m<x)
i=k+1;
else
j=k-1;
}
return j;
}
由于平方根是取下届,所以最后取j