• Leetcode刷题详解——x的平方根


    1. 题目链接:69. x 的平方根

    2. 题目描述:

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

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

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

    示例 1:

    输入:x = 4
    输出:2
    
    • 1
    • 2

    示例 2:

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

    提示:

    • 0 <= x <= 231 - 1

    3. 解法1(暴力枚举)

    3.1 算法思路:

    依次枚举[0,x]之间的所有数:

    • 如果i*i==x,直接返回i
    • 如果i*i>x,说明返回的结果是前一个数i-1

    3.2 C++算法代码:

    class Solution {
    public:
        int mySqrt(int x) {
            //两个较大的数相乘可能会超出int的范围,为了防止溢出,使用long long类型
            long long i=0;
            for(i=0;i<=x;i++)
            {
                //如果两个数想乘正好等于x,直接返回i
                if(i*i==x) return i;
                //如果第一次出现两个数相乘大于x,返回前一个数
                if(i*i>x) return i-1;
            }
            return -1;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    4. 解法2(二分查找)

    4.1 算法思路:

    x平方根的最终结果为index

    index左右两次数据的特点:

    • [0,index]之间的元素,平方之后都是小于等于x
    • [index+1,x]之间的元素,平方之后都是大于x

    请添加图片描述

    4.2 C++算法代码:

    class Solution {
    public:
        int mySqrt(int x) {
            if(x<1) return 0;
            int left=1,right=x;
            while(left
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
  • 相关阅读:
    ps[001] 初学创建剪切蒙版
    java毕业生设计大学生网络创业就业管理系统计算机源码+系统+mysql+调试部署+lw
    一种用于入侵检测的自适应集成机器学习模型
    文件上传漏洞(CVE-2022-23043)
    docker安装网易云音乐(yesplaymusic)
    Llama-3公布基础训练设施,使用49000个H100
    VMware Workstation提示:另一个程序已锁定文件的一部分,进程无法访问,删除.lck文件夹和文件
    YOLOv5优化:独家创新(Partial_C_Detect)检测头结构创新,实现涨点 | 检测头新颖创新系列
    Vuex 状态管理
    rabbitMq死信队列
  • 原文地址:https://blog.csdn.net/weixin_51799303/article/details/134022575