实现 int sqrt(int x)
函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例 1:
输入: 4
输出: 2
示例 2:
输入: 8
输出: 2
说明: 8 的平方根是 2.82842...,
由于返回类型是整数,小数部分将被舍去。
本题的最佳解答为使用二分法(parseInt也可解析一个字符串,返回一个整数)
/**
* @param {number} x
* @return {number}
*/
var mySqrt = function (x) {
var l = 0, r = x;
while (true) {
var mid = parseInt(l + (r - l) / 2);//用parseInt来返回整数
if (mid * mid > x) {
r = mid - 1;
} else if (mid * mid < x) {
if ((mid + 1) * (mid + 1) > x) {
return mid;
}
l = mid + 1;
} else {
return mid;
}
}
};
JavaScript中也给了一个方法,用时超过二分法,但比较简单
/**
* @param {number} x
* @return {number}
*/
var mySqrt = function(x) {
return Math.floor(Math.sqrt(x));
};