【 每天学习一点算法 2026/04/12】x 的平方根

每天学习一点算法 2026/04/12

题目:x 的平方根

给你一个非负整数 x ,计算并返回 x 的 算术平方根 。

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

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

作者:LeetCode

链接:https://leetcode.cn/leetbook/read/top-interview-questions-medium/xwrzwc/

来源:力扣(LeetCode)

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本来是没思路的,看到了官方题解的二分查找的题解,就瞬间知道了该怎么做了,就是在 1 ~ x 的范围内找平方等于x的数嘛,要注意的是小数只保留整数部分,所以我们需要找到平方等于 x 或者 平方小于 x 最靠后的数。

typescript 复制代码
function mySqrt(x: number): number {
  if (x <= 1) return x
  let left = 1, right = x / 2 // 目标值肯定是小于等于 2 / x 
  let res = 1
  while (left <= right) {
    const mid = Math.floor((left + right) / 2) // 取偏左的值
    if (mid * mid === x) {
      return mid // 找到平方根直接返回
    } else if (mid * mid > x) {
      right = mid - 1 // 目标值在左侧
    } else {
      left = mid + 1 // mid小于目标值
      res = mid // 记录当前的值,可能是最靠后的
    }
  }
  return res
};

题目来源:力扣(LeetCode)

相关推荐
CSDN_RTKLIB6 小时前
树、图高层抽象模型
算法
fanfan_hongyun6 小时前
UE5.1 学习记录-玩家控制器
学习·ue5
Dola_Zou14 小时前
工厂智能排产软件算法保护与按产线计费实战
算法·自动化·软件工程·软件加密
传奇开心果编程14 小时前
【xilem0.4基础语法学与练】第13课:Xilem 0.4 最简短代码体现“一切皆设计图“
学习·rust·前端框架
小雪崩14 小时前
嵌入式学习 day45:51单片机基础
学习·51单片机
啦啦啦啦啦zzzz15 小时前
Logger的组装(c++20)
c++·算法·c++20
尾善爱看海16 小时前
前端算法与手写题集
前端·算法
彧azz16 小时前
Java学习语法篇:变量
java·学习
Yanjun2i16 小时前
Agent学习记录五:Pydantic验证
人工智能·python·学习
程序员阿鹏17 小时前
为什么MySQL InnoDB选择B+树?
数据结构·数据库·b树·sql·mysql·算法·缓存