69. x 的平方根¶
难度:简单
题目¶
实现 int sqrt(int x)
函数。
计算并返回 x
的平方根,其中 x
是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例 1:
输入: 4
输出: 2
示例 2:
输入: 8
输出: 2
说明: 8 的平方根是 2.82842...,
由于返回类型是整数,小数部分将被舍去。
题解¶
使用二分查找即可,关于二分查找的讨论,请参见35. 搜索插入位置
unsigned int binsearch(unsigned int target, unsigned int lo, unsigned int hi)
{
int mid;
while (lo < hi)
{
mid = (lo + hi) >> 1;
if (mid * mid > target)
hi = mid;
else
lo = mid + 1;
}
return lo - 1;
}
int mySqrt(int x){
return binsearch(x, 0, 46341);
}