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

专题三_二分_x 的平方根

一:题目

解释:返回x的算数平方根,如果是小数,则舍去小数部分,返回整数即可!

二:算法

①:暴力

从1开始求平方,最后要么直接找到一个值的平方为x,要么发现x在两个相邻的数的平方之间

暴力的时间复杂度为O(N)

但是我们从暴力得知,最后返回的一定是left,因为双指针相遇返回left和right都可以,但是如果发现x是两个相邻的数的平方之间,则返回left,因为题目要求向下取整

②:二分

做过了上道题目,此题简直如鱼得水!

我们将数组划分为两个部分,左部分值的平方<=x,右部分值的平方>x,本质是因为数组有可能没有直接平方等于x的值,所以左部分是<=

其次我们的区间的范围直接从1~x开始即可,因为只要一个数是正整数,则其一定小于其的平方!

所以:

mid*mid <=x 则left=mid  //落入左部分

mid*mid >x 则right=mid-1 //落入右部分

很显然,我们的求中点的式子必须为:mid = left + (right - left + 1) / 2!

因为,我们说过mid不能落在原地踏步的指针上,此题left=mid,所以不能落在left上,所以我们选择该式子,当只有两个元素的时候,mid会落在right指针上

其次循环的条件必定是left<right,避免双指针相遇再次进入循环,导致原地踏步死循环!

三:代码

class Solution {
public:int mySqrt(int x) {if (x < 1) return 0;int left = 1, right = x;while (left < right) {long long mid = left + (right - left + 1) / 2;//long long 防溢出if (mid * mid <= x) left = mid;else right = mid - 1;}return left;}
};

解释:

1:循环条件,left<right

2:求中点式子,mid = left + (right - left + 1) / 2; 

3:返回的是left

4:x可能为0~1之间,所以一开始特判即可

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

相关文章:

  • Swift 实战:用最长递增子序列算法解“俄罗斯套娃信封”问题(LeetCode 354)
  • Effective C++ 条款42:了解 typename 的双重含义
  • 旅游管理实训室:旅游教育实践育人的关键支撑
  • spring中异步任务注解@Async和@scheduled的使用
  • 5G赋能井下“毛细血管”:巴拉素煤矿零散排水点智能监控系统
  • 基于阿里云音频识别模型的网页语音识别系统实现
  • Spring WebFlux 性能优化实践指南
  • 近日算法备案事项:九月批复审即将启动/赶11月批最后安全启动时间已过
  • week1-[顺序结构]跑道
  • YAML 中定义 List 的几种方式
  • WEB安全--Java安全--Servlet内存马
  • 第十四节:物理引擎集成:Cannon.js入门
  • Linux之高可用集群实战(二)
  • 机器学习 - Kaggle项目实践(4)Toxic Comment Classification Challenge 垃圾评论分类问题
  • 嵌入式第二十九课!!!回收子进程资源空间函数与exec函数
  • 大模型——如何让 AI 绘图的中文呈现更稳定和准确
  • Spring 条件注解与 SPI 机制(深度解析)
  • LeetCode 面试经典 150_数组/字符串_最长公共前缀(20_14_C++_简单)(暴力破解)(求交集)
  • Docker 实战:情感分析系统-容器化部署全流程(sa-logic、sa-webapp、sa-frontend )
  • Highcharts Dashboards | 打造企业级数据仪表板:从图表到数据驾驶舱
  • CUDA 编程笔记:GPU 硬件资源
  • 敏捷数据开发实践:基于 Amazon Q Developer + Remote MCP 构建本地与云端 Amazon Redshift 交互体系
  • mysql-条件查询案例
  • C++从入门到实战(十九)C++ vector容器及其常用接口
  • dockerfile自定义镜像,乌班图版
  • 【开源大模型和闭源大模型分别有哪些?两者的对比?部署私有化模型的必要性有哪些?】
  • 解决zabbix图片中文乱码
  • Spring Boot 拦截器详解
  • HarmonyOS Camera Kit 全解析:从基础拍摄到跨设备协同的实战指南
  • 开源 Arkts 鸿蒙应用 开发(十六)自定义绘图控件--波形图