当前位置: 首页 > news >正文

LeetCode-69. x 的平方根

1、题目描述:

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

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

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

示例 1:

输入:x = 4
输出:2

示例 2:

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

提示:

  • 0 <= x <= 231 - 1

2、代码:

class Solution
{
public:
    int mySqrt(int x) {
        if (x <= 1) return x;
        int l = 0, r = x, mid, sqrt;
        while (l <= r) {
            mid = (r + l) / 2;
            sqrt = x / mid;
            if (sqrt == mid) return mid;
            else if (sqrt < mid) r = mid - 1;
            else l = mid + 1;
        }
        return r;
    }
};

 


3、解题思路:

我们可以把这道题想象成,给定一个非负整数 a ,求 f ( x ) = x 2 a = 0 的解。因为我们只考虑 x 0 ,所以 f ( x ) 在定义域上是单调递增的。考虑到 f ( 0 ) = a 0 f ( a ) = a 2 a 0 ,我们可以对 [ 0 , a ] 区间使用二分法找到 f ( x ) = 0 的解。

注:当 x=0 或 x=1 时,直接返回 x,因为它们的平方根就是自身。

相关文章:

  • 第三章:工作线程池
  • 【蓝桥杯】1.k倍区间
  • VoIP之音频3A技术
  • Lecture 2 - Python
  • 【前端】【功能函数】eachTree,封装一个通用的遍历树结构的模板
  • Java 大视界 -- 深入剖析 Java 大数据实时 ETL 中的数据质量保障策略(97)
  • GMII(Gigabit Media Independent Interface)详解
  • 登录-10.Filter-登录校验过滤器
  • Docker 2025/2/24
  • 互联网上门洗衣洗鞋小程序
  • Python+Flutter前后端分离开发跨平台待办事项APP实战
  • 微信小程序:完善购物车功能,购物车主页面展示,详细页面展示效果
  • R 语言科研绘图 --- 柱状图-汇总
  • CSS编程基础学习
  • 每日一题——顺时针旋转矩阵
  • 基于 GEE 计算并下载研究区年均叶面积指数 LAI 和光合有效辐射分量 FPAR
  • 量子计算在金融风险评估中的应用:革新与突破
  • dify本地部署
  • Python--函数高级(上)
  • tauri输入js脚本的方法和注意事项initialization_script
  • wordpress 调试模式/seo外包公司是啥
  • 网站开发项目实战/品牌广告语经典100条
  • 武汉网站建设的费用/网站推广的方式和方法
  • 网站免费模版/百度登录个人中心
  • 上海平台网站建设/竞价运营是做什么的
  • 做网站运营话术/百度服务电话