1.题目描述
2.示例分析
3.思路分析
主要用二分来缩小范围,唯一一点不同的是平方根不是整数要用它前面的数和它后面的数来比较
4.代码展示
int mySqrt(int x)
{
int l=0,r=x;
long long mid;
while(l<=r)
{
mid=(l+r)/2;
if(mid*mid==x || (mid*mid<x&&(mid+1)*(mid+1)>x))
{
return mid;
}
if(mid*mid<x)
{
l=mid+1;
}
if(mid*mid>x)
{
r=mid-1;
}
}
return 0;
}
5.复杂度分析
时间复杂度:O(logn)
空间复杂度:O(1)