掘金团队号上线,助你 Offer 临门! 点击 查看详情
一、题目描述:
实现 int sqrt(int x) 函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去
示例 1:
输入: 4
输出: 2
示例 2:
输入: 8
输出: 2
说明: 8 的平方根是 2.82842...,
由于返回类型是整数,小数部分将被舍去。
二、思路分析:
- Math.sqrt(x) 方法解决
- 向下取整:~~ 或Math.floor()
三、AC 代码
/**
* @param {number} x
* @return {number}
*/
var mySqrt = function(x) {
return ~~Math.sqrt(x)
};
四、总结
- 当然不止一种方法,;
/**
* @param {number} x
* @return {number}
*/
var mySqrt = function(x) {
return Math.floor(Math.sqrt(x))
};
官方提供了几种方法:
- 二分查找
- 牛顿迭代
var mySqrt = function (x) {
let l = 0, r = x;
let res = 0;
while (l <= r) {
let mid = Math.floor((l + r) / 2);
if (mid * mid == x) { return mid; }
else if (mid * mid < x) {
res = l;
l = mid + 1;
}
else if (mid * mid > x) { r = mid - 1; }
}
return res;
};
var mySqrt = function (x) {
if(x<=0) return x;
let res;
for(let i = 1; i <= x; i++){
if(i * i <= x && (i+1)*(i+1) > x){
res = i;
return
}
}
return res;
}
仅供学习参考