实现 int sqrt(int x) 函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例 1:
输入: 4
输出: 2
示例 2:
输入: 8
输出: 2
说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。
解
投机取巧:
public int mySqrt(int x) {
int res = (int)Math.sqrt(x);
return res;
}
解2
根据不等式
(a+b)/2>=(ab)*0.5,使用(a+b)/2的值去无限逼近目标值的算术平方根。
public static int mySqrt(int x) {
if(x<=1)
return x;
long a = x;
long b = x;
while(b>(int)(a/b)) {
b = (b+(a/b))/2;
}
return (int)b;
}