题目:
分析:
二分
代码:
class Solution {
public:
int mySqrt(int x) {
int a=0,b=x,ans=0;
while(a<=b)
{
int c=a+(b-a)/2;
if((long long)c*(long long)c<=(long long)x)
{
ans=c;
a=c+1;
}
else b=c-1;
}
return ans;
}
};
字节有面试题是实现double的sqrt:
easy!!!
class Solution {
public:
//0.001级别的吧
int mySqrt(int x) {
double a=0,b=x,ans=0;
while(a<=b)
{
double c=a+(b-a)/2;
if(c*c<=x)
{
ans=c;
a=c+0.001;
}
else b=c-0.001;
}
cout<<ans;
return ans;
}
};