当前位置: 首页 > news >正文

【C++算法】20.二分查找算法_x 的平方根

文章目录

    • 题目链接:
    • 题目描述:
    • 解法
    • C++ 算法代码:
    • 图解


题目链接:

69. x 的平方根


题目描述:

58fff4194bf96524fed0310c67f388c4


解法

暴力解法:

如果x=17

1,2,3,4,5......这些数里面找他们的平方,16<x<25,所以整数部分是4

二段性:

5187d4c58a42e8f941cba9b8161d6040

可以使用二分查找

428e21dace0b6ca51aea89f6957b0c90

需要注意:0 <= x <= 231 - 1

也就意味着x是可以比1小的,但这个时候直接就是0了。


C++ 算法代码:

暴力查找

class Solution {public:int mySqrt(int x) {// 由于两个较大的数相乘可能会超过 int 最大范围// 因此用 long longlong long i = 0;for (i = 0; i <= x; i++){// 如果两个数相乘正好等于 x,直接返回 iif (i * i == x) return i;// 如果第一次出现两个数相乘大于 x,说明结果是前一个数if (i * i > x) return i - 1;}// 为了处理oj题需要控制所有路径都有返回值return -1;}
};

二分查找

class Solution 
{public:int mySqrt(int x) {if(x < 1) return 0; // 处理边界情况int left = 1, right = x; //从1-x二分while(left < right){long long mid = left + (right - left + 1) / 2;if(mid * mid <= x) left = mid;else right = mid - 1;}return left;}
};

图解

例如:x=8

  1. left=1,right=8

    进入循环,mid=1+(8-1+1)/2=1+4=5

  2. left=1,right=4

    进入循环,mid=1+(4-1+1)/2=1+2=3

    right = mid - 1=2

  3. left=1,right=2

    进入循环,mid=1+(2-1+1)/2=1+1=2

    mid * mid <= x,left = mid=2

  4. left=2,right=2,不满足循环条件,return left;返回2

http://www.lryc.cn/news/494165.html

相关文章:

  • 图像显示的是矩阵的行和列,修改为坐标范围。
  • 通义灵码走进北京大学创新课堂丨阿里云云原生 10 月产品月报
  • LeetCode Hot100 1~10
  • npm 最新国内淘宝镜像地址源 (旧版已不能用)
  • DepthAI 2.29版本 发布
  • C#反序列化XML时提示XML 文档(1, 1)中有错误
  • C# 中的接口:定义行为契约与实现多态性
  • Redis的基础知识·
  • qt QProxyStyle详解
  • AWS CLI 操作指南
  • 海盗王用golang重写的AccountServer功能
  • 如何保证spring boot应用程序的安全性?
  • 力扣 岛屿数量-200
  • 极狐GitLab 17.6 正式发布几十项与 DevSecOps 相关的功能【三】
  • 十二、正则表达式、元字符、替换修饰符、手势和对话框插件、字符串截取
  • 【信息系统项目管理师】第3章:信息系统治理 考点梳理
  • 实现对图片或者视频增加隐藏水印和提取水印
  • uniapp配置全局消息提醒
  • 卸载snap docker一直卡住:Save data of snap “docker“ in automatic snapshot set #3
  • python学习——字典元素的访问和遍历
  • 数据结构基础之《(9)—归并排序》
  • 【深度学习】各种卷积—卷积、反卷积、空洞卷积、可分离卷积、分组卷积
  • 远程视频验证如何改变商业安全
  • 电脑启动需要经历哪些过程?
  • 纯Go语言开发人脸检测、瞳孔/眼睛定位与面部特征检测插件-助力GoFly快速开发框架
  • postman使用正则表达式提取数据实战篇!
  • ipmitool使用详解(三)-解决各种dell、hp服务器无法ipmitool连接问题
  • AWS EC2设置用户名密码登录
  • BurpSuite安装教程(详细!!附带下载链接)
  • MIPS寄存器文件设计实验