LeetCode69. x的平方根
给你一个非负整数 x ,计算并返回 x 的 算术平方根 。
由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。
注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。
// 二分查找
class Solution {
public:
int mySqrt(int x) {
if(x == 0)
return x;
int l=1,r=x,mid,sqr;
while(l <= r)
{
int mid = l + (r-l)/2;
int sqr = x / mid;
if(mid == sqr)
return mid;
else if(mid > sqr) // 说明中间数大了,需要缩小;
{
r = mid-1; // 二分查找
}
else // 说明中间数小了,需要扩大;
l = mid+1;
}
return r;
}
};