前端算法-x 的平方根

简介: 前端算法-x 的平方根

题目


给你一个非负整数 x ,计算并返回 x 的 算术平方根 ,由于返回类型是整数,结果只保留整数部分 ,小数部分将被 舍去 ,不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。

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


题解


这里我们采用二分查找的方式进行实现,我们进入函数后先使用if语句判断当前出参x是不是等于0,如果等于0则直接将出参x返回出去,在声明两个变量,分别是left变量和right变量,left变量的值我们默认为1,right变量值默认为出参x减去1,在使用while进行循环,循环条件为当前left变量加1小于right变量,在循环中我们声明一个mid变量,他的值为left变量加上当前right变量减去left变量除以2最后使用Math.floor方法向下取整后的数,然后在使用if语句进行判断当前mid变量乘以mid变量后的值是否等于出参x,如果等于则直接将mid变量返回出去,不满足则往下判断当前mid变量乘以mid变量后的值是否小于出参x,如果小于则将mid变量的值赋值到left变量,最后则判断当前mid变量乘以mid变量后的值是否大于出参x,如果大于则将mid变量的值赋值到right变量,最后使用Math.floor方法将left变量值向下取整后返回出去

/**
 * @param {number} x
 * @return {number}
 */
var mySqrt = function(x) {
  if(x == 0) {
      return x
  }
  let left = 1, right = x - 1
  while(left + 1 < right) {
    let mid = left + Math.floor((right - left) / 2)
    if(mid * mid === x){
         return mid
    }
    if(mid * mid < x) {
        left = mid
     }
    if(mid * mid > x) {
        right = mid
    }
  }
  return Math.floor(left)
};

我们也可以直接使用Math数学函数进行实现,我们先用Math.sqrt方法获取到出参x的平方根,在使用Math.floor函数对Math.sqrt方法返回数进行向下取整,主要是防止通过Math.sqrt方法获取的是一个带小数点的数

/**
 * @param {number} x
 * @return {number}
 */
var mySqrt = function(x) {
return Math.floor(Math.sqrt(x));
};
相关文章
|
5月前
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
221 1
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
|
1月前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
129 3
|
4月前
|
算法 前端开发 机器人
一文了解分而治之和动态规则算法在前端中的应用
该文章详细介绍了分而治之策略和动态规划算法在前端开发中的应用,并通过具体的例子和LeetCode题目解析来说明这两种算法的特点及使用场景。
一文了解分而治之和动态规则算法在前端中的应用
|
3月前
|
移动开发 算法 前端开发
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
47 0
|
8月前
|
前端开发 算法
sass 公用10个mixins代码块,算法太TM重要了,前端开发要求
sass 公用10个mixins代码块,算法太TM重要了,前端开发要求
|
5月前
|
搜索推荐 前端开发 算法
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库
本文介绍了一个基于用户画像和协同过滤算法的音乐推荐系统,使用Django框架、Bootstrap前端和MySQL数据库构建,旨在为用户提供个性化的音乐推荐服务,提高推荐准确性和用户满意度。
432 7
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库
|
4月前
|
算法 前端开发
一文了解贪心算法和回溯算法在前端中的应用
该文章深入讲解了贪心算法与回溯算法的原理及其在前端开发中的具体应用,并通过分析LeetCode题目来展示这两种算法的解题思路与实现方法。
|
5月前
|
JavaScript 算法 前端开发
"揭秘Vue.js的高效渲染秘诀:深度解析Diff算法如何让前端开发快人一步"
【8月更文挑战第20天】Vue.js是一款备受欢迎的前端框架,以其声明式的响应式数据绑定和组件化开发著称。在Vue中,Diff算法是核心之一,它高效计算虚拟DOM更新时所需的最小实际DOM变更,确保界面快速准确更新。算法通过比较新旧虚拟DOM树的同层级节点,递归检查子节点,并利用`key`属性优化列表更新。虽然存在局限性,如难以处理跨层级节点移动,但Diff算法仍是Vue高效更新机制的关键,帮助开发者构建高性能Web应用。
96 1
|
5月前
|
数据采集 前端开发 算法
基于朴素贝叶斯算法的新闻类型预测,django框架开发,前端bootstrap,有爬虫有数据库
本文介绍了一个基于Django框架和朴素贝叶斯算法开发的新闻类型预测系统,该系统具备用户登录注册、后台管理、数据展示、新闻分类分布分析、新闻数量排名和新闻标题预测等功能,旨在提高新闻处理效率和个性化推荐服务。
|
5月前
|
算法
【算法】二分算法——x的平方根
【算法】二分算法——x的平方根

热门文章

最新文章