LeetCode 未知数的平方根使用JavaScript解题|前端学算法

简介: LeetCode 未知数的平方根使用JavaScript解题|前端学算法

x 的平方根


给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。

注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5

示例 1:

输入:x = 4

输出:2

示例 2:

输入:x = 8

输出:2

解释:8 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。  


解题思路


可以从1开始挨个平方,看看那个值的平方与x最为接近,但是这是方式太麻烦了,及其浪费性能和耗费时间。可以使用二分法,我们知道平方根的整数部分是<= x/2的,所以我们在这个范围内做二分查找,找到某个数的平方为x即可

具体步骤如下:

  • 第一步:如果X小于2时直接返回X
  • 第二步:初始化二分法的左右指针,left为1;rightx/2的整数部分
  • 第三步:当左指针小于等于右指针时进入循环:
  • 二分法计算出中间值 mid
  • 如果mid的平方等于x就返回mid
  • 如果mid的平方小于x就令左指针等于mid+1,否则就令右指针为mid-1
  • 第四步:返回 right
var mySqrt = function(x) {
    if(x < 2) return x;
    let left = 1;
    let right = Math.floor(x / 2);
    while(left <= right) {
        let mid = Math.floor(left + (right - left) / 2);
        if(mid * mid === x) return mid;
        if(mid * mid < x){
             left = mid + 1;
        } else {
            right = mid - 1;
        }
    }
    return right;
};


image.png


知识点


  • Math.floor(num)仅保留整数部分(向下取整)
  • Math.ceil(num)向上取整
  • Math.round(num) 四舍五入后的整数
  • Math.random() 结果为0-1间的一个随机数(包括0,不包括1)



目录
相关文章
|
2天前
|
JavaScript 算法 前端开发
JS算法必备之String常用操作方法
这篇文章详细介绍了JavaScript中字符串的基本操作,包括创建字符串、访问特定字符、字符串的拼接、位置查找、大小写转换、模式匹配、以及字符串的迭代和格式化等方法。
JS算法必备之String常用操作方法
|
2天前
|
JavaScript 算法 前端开发
JS算法必备之Array常用操作方法
这篇文章详细介绍了JavaScript中数组的创建、检测、转换、排序、操作方法以及迭代方法等,提供了数组操作的全面指南。
JS算法必备之Array常用操作方法
|
11天前
|
JavaScript 算法 前端开发
"揭秘Vue.js的高效渲染秘诀:深度解析Diff算法如何让前端开发快人一步"
【8月更文挑战第20天】Vue.js是一款备受欢迎的前端框架,以其声明式的响应式数据绑定和组件化开发著称。在Vue中,Diff算法是核心之一,它高效计算虚拟DOM更新时所需的最小实际DOM变更,确保界面快速准确更新。算法通过比较新旧虚拟DOM树的同层级节点,递归检查子节点,并利用`key`属性优化列表更新。虽然存在局限性,如难以处理跨层级节点移动,但Diff算法仍是Vue高效更新机制的关键,帮助开发者构建高性能Web应用。
28 1
|
15天前
|
算法 Java
LeetCode第69题x 的平方根
这篇文章是关于LeetCode第69题"x的平方根"的解题分享。作者介绍了使用二分查找算法来解决这个问题的方法,这是一种简单且有效的方式,可以显著降低求解平方根的时间复杂度。文章提供了详细的分析、解题思路和Java语言的代码实现,最后总结了二分查找思想在算法中的应用价值。
LeetCode第69题x 的平方根
|
2月前
|
数据采集 算法 JavaScript
揭开JavaScript字符串搜索的秘密:indexOf、includes与KMP算法
JavaScript字符串搜索涵盖`indexOf`、`includes`及KMP算法。`indexOf`返回子字符串位置,`includes`检查是否包含子字符串。KMP是高效的搜索算法,尤其适合长模式匹配。示例展示了如何在数据采集(如网页爬虫)中使用这些方法,结合代理IP进行安全搜索。代码示例中,搜索百度新闻结果并检测是否含有特定字符串。学习这些技术能提升编程效率和性能。
揭开JavaScript字符串搜索的秘密:indexOf、includes与KMP算法
|
17天前
|
算法
【算法】二分算法——x的平方根
【算法】二分算法——x的平方根
|
23天前
|
算法 Java 索引
LeetCode初级算法题:寻找数组的中心索引+x的平方根+三个数的最大乘积+Leetcode 149:直线上最多的点数 Java详解
LeetCode初级算法题:寻找数组的中心索引+x的平方根+三个数的最大乘积+Leetcode 149:直线上最多的点数 Java详解
26 0
|
2月前
|
算法 JavaScript
JS 【详解】树的遍历(含深度优先遍历和广度优先遍历的算法实现)
JS 【详解】树的遍历(含深度优先遍历和广度优先遍历的算法实现)
35 0
JS 【详解】树的遍历(含深度优先遍历和广度优先遍历的算法实现)
|
2月前
|
算法 JavaScript
JS 【详解】二叉树(含二叉树的前、中、后序遍历技巧和算法实现)
JS 【详解】二叉树(含二叉树的前、中、后序遍历技巧和算法实现)
28 0
|
2月前
|
算法 JavaScript
JS 【算法】二分查找
JS 【算法】二分查找
22 0

热门文章

最新文章

下一篇
云函数