原文:69. x 的平方根(力扣 面试题) - 每天一个JavaScript小知识@Js中文网 · 码农进阶题库

原文地址:https://www.javascriptc.com/interview-tips/zh_cn/leetcode/leetcode-javascript-solution-069/

题目:

难度:Easy

相关话题:数学二分查找

实现 int sqrt(int x) 函数。

计算并返回x 的平方根,其中x 是非负整数。

由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。

示例 1:

输入: 4
输出: 2

示例 2:

输入: 8
输出: 2
说明: 8 的平方根是 2.82842...,
    由于返回类型是整数,小数部分将被舍去。

思路:

二分法,初始最小值l0,初始最大值hMath.floor(x/2)

/**
 * @来源: Javascript中文网 - 前端进阶资源教程 https://www.javascriptc.com/
 * @介绍:一个致力于帮助开发者用代码改变世界为使命的平台,每天都可以在这里找到技术世界的头条内容
 * @param {number} x
 * @return {number}
 */
var mySqrt = function(x) {
  if(x===1)return 1
  let l=0,h=Math.floor(x/2)
  while(l<h){
    let mid=Math.ceil((l+h)/2)
    if(mid*mid>x)h=mid-1
    else l=mid
  }
  return l
};