85.x的平方根(力扣)

目录

问题描述

代码解决以及思想 

知识点


问题描述

代码解决以及思想 

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博客

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HiSilicon352 android9.0 适配红外遥控器

海思Android解决方案在原生Android基础上&#xff0c;基于传统电视用户使用习惯&#xff0c;增加了对红外遥控器和按键板的支持&#xff0c;使传统电视用户能更好适应智能电视方案。 一.功能描述&#xff1a; 在系统启动时&#xff0c;会先启动android_ir_user&#xff1b;vinp…

SOLIDWORKS软件提供了哪些特征造型方法?硕迪科技

SOLIDWORKS作为一款三维设计软件&#xff0c;为用户提供了多种特征造型方法&#xff0c;以下是其中几种常用的&#xff1a; 实体建模特征&#xff1a;SOLIDWORKS使用实体建模技术来创建和编辑三维几何体。通过使用基本几何体&#xff08;如立方体、圆柱体、圆锥体等&#xff09…

四川芸鹰蓬飞商务信息咨询有限公司电商带货可信吗

今天&#xff0c;我们要向大家介绍的是四川芸鹰蓬飞商务信息咨询有限公司的电商带货服务&#xff0c;一个在电商领域独树一帜的服务项目。它的出现&#xff0c;不仅为电商行业注入了新的活力&#xff0c;也引领了行业发展的新趋势。 一、背景介绍 四川芸鹰蓬飞商务信息咨询有限…

【1++的Linux】之线程(三)含生产者消费者模型

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的Linux】 文章目录 一&#xff0c;可重入与线程安全二&#xff0c;死锁三&#xff0c;线程同步什么是线程同步&#xff1f;怎么实现线程同步条件变量 四&#xff0c;生产者与消费者模型1&…

MySQL的安装使用(入学篇)

目录 1 MySQL安装 1.1 安装epel源 1.2 安装MySQL Repository 1.3 安装MySQL官方yum源 1.4 安装服务端、客户端 1.5 启动MySQL服务 2 MySQL 使用 2.1 获取初始登录密码 2.2 登录MySQL数据库 2.3 修改密码 2.4 退出数据库 2.5 使用新密码登录数据库 2.6 重启数据库 2.7 创建数据…

【分享贴】需求变更、项目延误,项目经理应该如何应对?

案例分享&#xff1a; 项目经理小李跟进了一年半的项目&#xff0c;眼看着要到交付验收的阶段了&#xff0c;甲方的对接人却临时更换了&#xff0c;现在面临着一系列他无法处理的问题&#xff0c;项目目前推进困难。 案例背景&#xff1a; 小李在跟原甲方对接人合作时&#x…

Qt 事件循环

引出 UI程序之所叫UI程序&#xff0c;是因为需要与用户有交互&#xff0c;用户交互一般是通过鼠标键盘等的输入设备&#xff0c;那UI程序就需要有能随时响应用户交互的能力。 一个C程序的main函数大概是下面这样&#xff1a; int main() {...return 0; } 我们如何使程序能随…

ECharts中rich的使用

ECharts官方rich介绍 label: {// 在文本中&#xff0c;可以对部分文本采用 rich 中定义样式。// 这里需要在文本中使用标记符号&#xff1a;// {styleName|text content text content} 标记样式名。// 注意&#xff0c;换行仍是使用 \n。formatter: [{a|这段文本采用样式a},{b…

使用Nginx和Spring Gateway为SkyWalking的增加登录认证功能

文章目录 1、使用Nginx增加认证。2、使用Spring Gateway增加认证 SkyWalking的可视化后台是没有用户认证功能的&#xff0c;默认下所有知道地址的用户都能访问&#xff0c;官网是建议通过网关增加认证。 本文介绍通过Nginx和Spring Gateway两种方式 1、使用Nginx增加认证。 生…

大模型+人形机器人,用AI唤起钢筋铁骨

《经济参考报》11月8日刊发文章《多方布局人形机器人赛道,智能应用前景广》。文章称&#xff0c;工信部日前印发的《人形机器人创新发展指导意见》&#xff0c;按照谋划三年、展望五年的时间安排&#xff0c;对人形机器人创新发展作了战略部署。 从开发基于人工智能大模型的人…

原型制作神器ProtoPie的使用Unity与网页跨端交互

什么是ProtoPie&#xff1f; ProtoPie是一款面向设计师的软件原型设计工具&#xff0c;例如制作App界面交互展示&#xff0c;制作好的原型可以一键发布到Web服务器&#xff0c;就可以浏览器访问。由于其内置了大量常用交互类型&#xff0c;以及"程序化"模块&#xf…

【Mac开发环境搭建】Node.js安装(多版本切换)、Maven安装

文章目录 Node安装安装多个Node Maven安装下载配置环境变量修改配置文件settings.xml配置maven的本地仓库地址配置阿里云镜像仓库 IDEA使用 Node安装 https://nodejs.org/download/release/v16.20.1/ 如果对安装位置有要求&#xff0c;可以更改安装位置&#xff0c;不然直接点…

【开源分享】国内可用的免费安卓GPT语音助手 - 可音量键唤起,可联网

写在前面&#xff1a;这是一个我写的开源GPT语音助手&#xff0c;不收钱&#xff0c;只求Star! 简要介绍 这是一个基于ChatGPT的安卓端语音助手&#xff0c;允许用户通过手机音量键从任意界面唤起并直接进行语音交流&#xff0c;用最快捷的方式询问并获取回复 使用效果 一、基…

【干货】132道最新K8S面试题汇总~

k8s全称kubernetes&#xff0c;这个名字大家应该都不陌生&#xff0c;k8s是为容器服务而生的一个可移植容器的编排管理工具&#xff0c;越来越多的公司正在拥抱k8s&#xff0c;并且当前k8s已经主导了云业务流程&#xff0c;推动了微服务架构等热门技术的普及和落地&#xff0c;…

ChatGPT:如何安装使用插件?超详细的教程!

1.最简单的方法 直接使用油猴&#xff0c;里边能搜索到的插件都可以用 2.官方插件使用 ChatGPT Plus引入插件后&#xff0c;功能暴强许多&#xff0c;比如可以联网、可以生成图表、可以分析视频、可以与PDF交谈等。但有不少小伙伴还不知道怎么安装使用ChatGPT插件&#xff0c;所…

Python比较2个json数据是否相等

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码 1、json数据转换成字典 dict1 json.load(load_f1) dict2 json.load(load_f2)2、将两个字典按key排好序&#xff0c;然后使用zip()函数将两个字典对应的key打包成元组。 …

MySQL 批量修改表的列名为小写

1、获取脚本 SELECT concat( alter table , TABLE_NAME, change column , COLUMN_NAME, , lower( COLUMN_NAME ), , COLUMN_TYPE, comment \, COLUMN_COMMENT, \; ) AS 脚本 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA 数据库名 and TABLE_NAME表名-- 大写是up…

win10 下 ros + Qt 工程CMakeLists.txt

win10 下 ros Qt 工程CMakeLists.txt 系统&#xff1a;win10 ros: melodic Qt: 5.12.12 源码目录: D:\workspace\catkin_qt 示例代码 https://github.com/ncnynl/ros-qt.git 由于示例代码是Qt4 &#xff0c;目前我是用QT5,所以CMakeLists.txt 修改如下 CMakeLists.txt #####…

数据跨领域应用实例—车辆通行大数据应用场景(二)

2023年10月25日&#xff0c;国家数据局正式揭牌。标志着我国数据基础制度正在不断完善&#xff0c;数据资源使用水平稳步提升&#xff0c;数据要素市场将进入发展快车道。当前&#xff0c;数字经济已成为我国经济高质量发展的新动能&#xff0c;国家数据局的成立&#xff0c;在…

互联网是如何运作的?以前端角度出发(b站objtube的卢克儿听课笔记)

1、你是如何用你的计算机设备发送数据和接受数据的呢&#xff1f; 例如我们是如何访问到哔哩哔哩的数据的 当你的设备开始连接到互联网时&#xff0c;会被分配一个IP地址。 而哔哩哔哩的服务器也接入到互联网&#xff0c;它也将被分配一个IP地址。 我们常说你访问某个网站&a…