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

二分查找-69.x的平方根-力扣(LeetCode)

一、题目解析

1.结果只保留整数部分,小数部分舍去

2.不允许使用任何内置指数函数和算符

二、算法原理

解法1:暴力解法

从1开始枚举出平方数,与x比较大小

解法2:二分算法

二段性

 根据举例可以发现,要找的平方根,它的平方数是小于或等于x的,因此我们可以划分出两段区间,由此可以使用二分算法解决问题

 这里mid的计算是防止int的溢出

细节问题

1.由于x范围属于[0,2^31-1],对于x<1的情况单独处理,因为x<1,所以x的平方根同样<1,由于小数部分要被舍弃,所以结果为0

2.这里的mid*mid会超出int存储大小,所以可以用long long

三、代码示例

解法2:

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;//防止溢出if(mid*mid <= x) left = mid;else right = mid - 1;}return left;}
};

 

 

看到最后,如果对您有所帮助,还请点赞、关注和收藏,我们下期再见!

 

http://www.xdnf.cn/news/15920.html

相关文章:

  • 大语言模型置信度增强实战指南
  • (LeetCode 每日一题) 1233. 删除子文件夹 (排序)
  • 统计学习方法
  • 堆堆堆,咕咕咕
  • python的多线程无法并行只能并发,why?
  • GA-BP遗传算法优化BP神经网络数据生成,采用SVM分类模型评估
  • roslaunch 文件的核心语法和使用技巧
  • Linux内核设计与实现 - 第5章 系统调用
  • docker构建springboot镜像
  • 数据结构之图
  • 【办公类-107-02】20250719视频MP4转gif(削减MB)
  • MyBatis分页神器PageHelper深度解析
  • 深入解析文件操作(上)- 二进制文件和文本文件,流的概念,文件的打开和关闭
  • 计算机网络1.1:计算机网络在信息时代的作用
  • Redis常见线上问题
  • Javascript进程和线程通信
  • VIT速览
  • Nestjs框架: RxJS 核心方法实践与错误处理详解
  • XSS漏洞----基于Dom的xss
  • 混沌趋势指标原理及交易展示
  • python爬虫之获取渲染代码
  • Python 数据分析模板在工程实践中的问题诊断与系统性解决方案
  • 探索量子计算与法律理论的交叉领域
  • Zephyr环境搭建 - Board GD32A503
  • 力扣 hot100 Day49
  • 数据集下载网站
  • XSS漏洞知识总结
  • [spring6: AspectMetadata AspectInstanceFactory]-源码解析
  • PCIe RAS学习专题(3):AER内核处理流程梳理
  • 消息队列:数字化通信的高效纽带