题目描述
![image-20201108093932914](https://i.loli.net/2020/11/08/pxcXEuz94Ot8m1Z.png)
实现思路(二分查找)
利用二分查找的思想,用 left、right和mid三个变量去逼近最终的结果
在每一轮循环中,令 mid = (left + right) / 2
若mid的平方大于目标,则缩小右边界 (right=mid)
若mid的平方小于目标,则增大左边界(left=mid)
直到 right-left 差值为1,说明找到结果
代码实现(Javascript)
/**
* @param {number} x
* @return {number}
*/
var mySqrt = function(x) {
if(x===0 || x===1){
return x
}
var left=0
var right=x
while(left<right){
if(Math.abs(left-right) <= 1){
return left
}
let mid=Math.floor((left+right) / 2)
if(mid*mid === x){
return mid
}else if(mid*mid > x){
right = mid
}else {
left = mid
}
}
};