69.x 的平方根(力扣LeetCode)

69.x 的平方根(力扣LeetCode)

题目描述

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

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

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

示例 1:

输入:x = 4
输出:2

示例 2:

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

提示:

  • 0 <= x <= 231 - 1

浮点数二分

// 定义解决问题的类 Solution
class Solution {
   
public:
    // 计算并返回非负整数 x 的算术平方根的整数部分
    int mySqrt(int x) {
   
        // 由于要找的平方根不会超过 x 本身,二分查找的起始范围设定为 [0,x]
        double l = 0, r = x;
        
        // 使用二分查找来逼近平方根的值。这里设置一个很小的阈值 1e-6,
        // 表示当左右边界的差距小于这个阈值时停止搜索,
        // 这是因为我们只需要得到整数部分
        while (r - l >= 1e-6) {
   
            // 计算中点值
            double mid = (l + r) / 2.0;
            
            // 如果 mid 的平方大于或等于 x,我们知道平方根位于左半部分,
            // 所以将右边界移动到 mid
            if (mid * mid >= x) r = mid;
            // 如果 mid 的平方小于 x,我们知道平方根位于右半部分,
            // 所以将左边界移动到 mid。这里不需要处理边界问题,
            // 因为我们不是在寻找具体的元素,而是逼近一个实数值
            else l = mid;
        }
        
        // 最后返回右边界 r 作为结果,由于题目要求只要整数部分,
        // 变量 r 会自动转换为 int 类型,并且舍去小数部分
        return r;
    }
};

相关推荐

  1. 69.x 平方根LeetCode

    2024-01-26 22:42:03       29 阅读
  2. 69. x 平方根

    2024-01-26 22:42:03       37 阅读
  3. leetcode69 x 平方根

    2024-01-26 22:42:03       30 阅读
  4. 69 x平方根 二分查找求平方根 C语言

    2024-01-26 22:42:03       10 阅读
  5. 每日OJ题_算法_二分查找③_69. x 平方根

    2024-01-26 22:42:03       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-26 22:42:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-26 22:42:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-26 22:42:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-26 22:42:03       18 阅读

热门阅读

  1. mysql sql查询

    2024-01-26 22:42:03       39 阅读
  2. 学习 canvas标签 这一篇文章足以

    2024-01-26 22:42:03       23 阅读
  3. Git的常用命令

    2024-01-26 22:42:03       36 阅读
  4. JVM实战(33)——内存溢出之内存使用率过高

    2024-01-26 22:42:03       39 阅读