【算法专题突破】二分查找 - x 的平方根(18)

目录

[1. 题目解析](#1. 题目解析)

[2. 算法原理](#2. 算法原理)

[3. 代码编写](#3. 代码编写)

写在最后:


1. 题目解析

题目链接:69. x 的平方根 - 力扣(LeetCode)

这道题就是求算数平方根,

要注意的点是他只需要保留整数部分,小数部分会舍去

2. 算法原理

我们确定好一个区间 1 ~ x,数字 x 的算数平方根一定在这里面,

最简单的思路就是用暴力解法每个都遍历一遍找出来,

实际上,在这样一个有序的数组里面,我们可以使用二分查找来优化代码:

我们每次取中点 mid

当 mid * mid <= x,让 left = mid

当 mid * mid > x,让 right = mid - 1

3. 代码编写

cpp 复制代码
class Solution {
public:
    int mySqrt(int x) {
        if(x == 0) return 0;
        int left = 1, right = x;
        while(left < right) {
            long mid = left + (right - left + 1) / 2;
            if(mid * mid <= x) left = mid;
            else right = mid - 1;
        }
        return right;
    }
};

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果感到有所收获的话可以给博主点一个哦。

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

相关推荐
斯维赤19 分钟前
每天学习一个小算法:快速排序
java·python·学习·算法·排序算法
王老师青少年编程40 分钟前
csp信奥赛C++高频考点专项训练之贪心算法 --【区间贪心】:雷达安装
c++·算法·贪心·csp·信奥赛·区间贪心·雷达安装
elseif12341 分钟前
分组背包1
c++·学习·算法
im_AMBER44 分钟前
Leetcode 160 最小覆盖子串 | 串联所有单词的子串
开发语言·javascript·数据结构·算法·leetcode
狐璃同学1 小时前
数据结构(1)三要素
数据结构·算法
列星随旋1 小时前
拓扑排序(Kahn算法)
算法
Hello!!!!!!1 小时前
C++基础(六)——数组与字符串
c++·算法
山半仙xs1 小时前
基于卡尔曼滤波的人脸跟踪
人工智能·python·算法·计算机视觉
智者知已应修善业2 小时前
【51单片机调用__TIME__无法实时时间】2023-7-10
c++·经验分享·笔记·算法·51单片机
做时间的朋友。2 小时前
算法-最大单入口空闲区域
算法