69. x 的平方根
69. x 的平方根
给你一个非负整数 x ,计算并返回 x 的 算术平方根 。
由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。
注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。
二分思路
数据挺大,用longlong。
class Solution {
public:
int mySqrt(int x) {
long long l=1,r=x;
while(l<r){
long long mid=(l+r+1)>>1;
if((long long)mid*mid==x)return mid;
else if((long long)mid*mid>x)r=mid-1;
else l=mid;
}
return r;
}
};
使用二分算法的一个特征是有序,但是本质上还是分析问题的划分性质。