题意:
求x 的平方根(向下取整)。
方法一:
模拟
思路:循环遍历,找到
的平方是大于
,返回
.
class Solution {
public:
int mysqrt(int x) {
int i=1;
for(;i*i<=x;i++);//当i*i>x时,返回i-1
return i-1;
}
};
时间复杂度:
空间复杂度:![]()
方法二:
二分
思路:数值的开方范围肯定在
对这个区间内二分查找,即可找到答案。
class Solution {
public:
int mysqrt(int x) {
if(x==1)
return 1;
long long l=1,r=x,mid;
while(l<r){
mid=(l+r)/2;//二分
if(mid*mid>x)//如果大于x,则r=mid
r=mid;
else//否则l=mid+1
l=mid+1;
}
return (int)l-1;
}
};
时间复杂度:
空间复杂度:![]()



京公网安备 11010502036488号