85.x的平方根(力扣)

news2025/1/17 21:57:17

目录

问题描述

代码解决以及思想 

知识点


问题描述

代码解决以及思想 

class Solution {
public:
    int mySqrt(int x) {
        int left = 0;            // 定义左边界
        int right = x;           // 定义右边界,初始值取 x

        while (left <= right) {  // 当左边界小于或等于右边界时,执行循环
            int middle = left + (right - left) / 2;  // 计算中间值,避免整数溢出
            int midSquare = middle * middle;         // 计算中间值的平方

            if (midSquare == x) {  // 如果中间值的平方等于 x,表示找到平方根
                return middle;
            } else if (midSquare > x) {  // 如果中间值的平方大于 x,目标在左半部分
                right = middle - 1;     // 更新右边界
            } else {                   // 否则,目标在右半部分
                left = middle + 1;      // 更新左边界
            }
        }

        return left - 1;  // 循环结束后,返回 left - 1,因为 left 已经大于 right,left - 1 的平方是小于等于 x 的最大整数
    }
};
  1. 初始化左边界 left 为0和右边界 rightx。因为平方根不会大于 x,所以 right 初始值取 x

  2. 进入一个循环,只要 left 不大于 right,执行以下操作:

    a. 计算中间值 middle,通过 (left + right) / 2 来避免整数溢出。

    b. 计算 middle 的平方 midSquare,即 middle * middle

    c. 检查 midSquarex 的关系:

    • 如果 midSquare 等于 x,表示找到了平方根,返回 middle
    • 如果 midSquare 大于 x,说明平方根在 leftmiddle 之间,将 right 更新为 middle - 1
    • 如果 midSquare 小于 x,说明平方根在 middleright 之间,将 left 更新为 middle + 1
  3. 循环结束后,返回 left - 1,因为 left 已经大于 right,而 left - 1 的平方是小于等于 x 的最大整数。

知识点

这个方法利用了二分查找的思想,通过逐步缩小搜索范围来找到满足条件的整数解,即非负整数 x 的算术平方根。这样可以在较快的时间内找到答案。

82.二分查找-CSDN博客

写在最后:以上就是本篇文章的内容了,感谢你的阅读。如果感到有所收获的话可以给博主点一个赞哦。如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1177999.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CC1101 一款低功耗sub- 1ghz收发器芯片 适用于无线遥控智能家居

产品描述 CC1101是一个低成本的sub- 1ghz收发器,专为极低功耗的无线应用而设计。 该电路主要用于工业、科学和医学)和SRD (Short Range Device)频带,在315,433,868和915兆赫&#xff0c;但可以轻松可编程用于其他操作频率在300-348 MHz、387-464 MHz,以及779-928 MHz频段。射…

【网络管理——操作系统与安全】

文章目录 一、安装WindowsServer操作系统1、新建虚拟机2、进入Windows虚拟机进行相关配置 二、Windows用户账户管理与配置1、创建用户账户2、创建用户组 三、Windows操作系统的本地安全策略设置1、配置用户账户密码策略2、配置用户账户锁定策略3、配置组策略安全选项4、配置审核…

CSDN每日一题学习训练——Java版(两数相加、二叉树的锯齿形层序遍历、解数独)

版本说明 当前版本号[20231106]。 版本修改说明20231106初版 目录 文章目录 版本说明目录两数相加题目解题思路代码思路补充说明参考代码 二叉树的锯齿形层序遍历题目解题思路代码思路参考代码 解数独题目解题思路代码思路补充说明参考代码 两数相加 题目 给你两个 非空 的…

代码随想录算法训练营第四十四天丨 动态规划part07

70. 爬楼梯 思路 这次讲到了背包问题 这道题目 我们在动态规划&#xff1a;爬楼梯 (opens new window)中已经讲过一次了&#xff0c;原题其实是一道简单动规的题目。 既然这么简单为什么还要讲呢&#xff0c;其实本题稍加改动就是一道面试好题。 改为&#xff1a;一步一个…

如果你们团队想提升剪辑效率,这个批量剪辑神器不可错过

实话实说&#xff0c;现在市场上批量剪辑视频的软件真的特别多&#xff0c;但是其实仔细了解下&#xff0c;会发现功能都是大差不差&#xff0c;但又有一些细微的差别&#xff0c;让人难以抉择。 今天给大家推荐一款个人觉得性价比很高的软件——超级编导。 首先&#xff0c;…

基于MSF控制同一热点(局域网)下的其他设备

主要是基于Metasploit&#xff0c;利于msfvenom生成的恶意软件获取目标shell。 我想各位都很熟悉的一个操作&#xff0c;那就是使用虚拟机当攻击机&#xff0c;本地物理机作为靶机&#xff0c;但这样其实并不能很好的反应出现实情况&#xff0c;有点自己攻击自己的感觉。 因此…

【C/C++笔试练习】内联函数、哪些运算符不能重载、拷贝构造函数、const类型、函数重载、构造函数、空类的大小、井字棋、密码强度等级

文章目录 C/C笔试练习选择部分&#xff08;1&#xff09;内联函数&#xff08;2&#xff09;哪些运算符不能重载&#xff08;3&#xff09;拷贝构造函数&#xff08;4&#xff09;const类型&#xff08;5&#xff09;函数重载&#xff08;6&#xff09;构造函数&#xff08;7&a…

第八章:security testing

文章目录 Security Testingbuffer overflow 的例子Fuzzing 测试Random Testing好处坏处Mutation-based Fuzzing好处坏处Generation-based Fuzzing好处坏处Memory DebuggerUndefined Behaviors (未定义行为)Security Testing 渗透测试(或称为pentesting)是指攻击软件以寻找安…

047_第三代软件开发-日志分离

第三代软件开发-日志分离 文章目录 第三代软件开发-日志分离项目介绍日志分离用法 关键字&#xff1a; Qt、 Qml、 log、 日志、 分离 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt Meta-Object Language&#xff09;和 C 的强…

uniapp使用技巧及例子

前言 uniapp&#xff08;Universal Application&#xff09;是一种基于Vue.js的全端解决方案&#xff0c;允许开发者使用一套代码构建多个平台的应用程序。这些平台包括iOS、Android、H5、微信小程序、支付宝小程序等。uniapp的出现解决了跨平台开发的痛点&#xff0c;大大减少…

祝贺璞华大数据产品入选中国信通院“铸基计划”

武汉璞华大数据技术有限公司HawkEye设备数字化管理平台产品&#xff0c;凭借优秀的产品技术能力&#xff0c;通过评估后&#xff0c;入选中国信通院“铸基计划”《高质量数字化转型产品及服务全景图(2023&#xff09;》的工业数字化领域。 “铸基计划”是中国信通院推出的高质量…

轻量封装WebGPU渲染系统示例<20>- 美化一下元胞自动机(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/GameOfLifePretty.ts 系统特性: 1. 用户态与系统态隔离。 2. 高频调用与低频调用隔离。 3. 面向用户的易用性封装。 4. 渲染数据(内外部相关资源)和渲染机制分离…

【新】致远OA从前台XXE到RCE漏洞分析

0x01 前言 致远OA是目前国内最流行的OA系统之一&#xff0c;前几年也曾爆出过多个安全漏洞。致远官方一直对修复漏洞的态度十分积极&#xff0c;目前能有效利用的致远漏洞已经很少了。 和我们之前分享过的通达OA的漏洞类似&#xff0c;这类主流OA系统现在想要直接一步达到RCE的…

UE5——源码阅读——10——引擎预初始化

运行延迟注册委托 初始化堆栈跟踪 检测是否需要覆盖打印时间 检测所必要的插件是否是可用的 获取目标信息 拿到编辑器目标名 检测当前运行的可执行文件是否是正确的 检测项目模块是否有过时和不兼容的 检测插件模块是否有过时和不兼容的 报错误信息 强制通讯 判断是…

选择合适的Python Web框架

Python 是一种功能强大的编程语言&#xff0c;广泛应用于 Web 开发领域。FastAPI 和 Flask 是 Python Web 开发中最受欢迎的两个框架。本文将对 FastAPI 和 Flask 进行综合对比&#xff0c;探讨它们在语法和表达能力、生态系统和社区支持、性能和扩展性、开发工具和调试支持、安…

找不到d3dcompiler_47.dll,无法继续执行代码,解决方法

首先&#xff0c;让我们来了解一下d3dcompiler_47.dll文件。d3dcompiler_47.dll是一个动态链接库文件&#xff0c;它是DirectX SDK中的一个重要组件&#xff0c;用于编译DirectX着色器。当我们在使用一些需要DirectX支持的软件或游戏时&#xff0c;如果缺少了这个文件&#xff…

Linux进程调度之完全公平调度(压箱底的干货分享)

目录 1.什么是完全公平调度&#xff1f; 2.调度周期&#xff0c;调度延迟&#xff0c;最小调度粒度 3.实际运行时间 4.nice值和权重 5.虚拟运行时间 6.查看进程运行时间 1.什么是完全公平调度&#xff1f; 完全公平调度&#xff0c;CFS (Completely Fair Scheduler) 是 …

python 去除图像中的框

最近在做图像标注&#xff0c;会出现以下的图片&#xff0c;需要去除其中的边框。 1.思路 人工标注画框的范围P&#xff0c;并使用标注工具在画框上画一个点A。获取点A的坐标和颜色。在范围P内&#xff0c;将与点A颜色相似的每一个点x的颜色&#xff0c;替换为点x上下&#…