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

x的平方根-力扣

本题想到使用二分法不断逼近一个区间,直到最后趋近于x,从而求得解。注意的点,一开始使用

if(mid * mid <= x) 

进行判断时,会出现越界,原因是输入一个很大的数是,超过int表示的范围,继而修改为这种判断形式:

if( mid <= x/mid)
  • 需要注意的是,这种判断方式存在一定的精度问题

这种判断方式有需要确保 mid 的值不为 0,那么左区间就需要从1开始。
那么当输入 x 的值为0时,只需要不进入while循环,直接返回 ans初始值0即可。
如果使用力扣官方题解,mid 设置为 long long类型,则无须这样处理。

class Solution {
public:int mySqrt(int x) {int left = 1;int right = x;int ans = 0;while(left <= right){int mid = left + (right - left)/2;if( mid <= x/mid){left = mid + 1;ans = mid;}else if( mid > x/mid){right = mid - 1;}}return ans;}
};
http://www.lryc.cn/news/352446.html

相关文章:

  • hot100 -- 回溯(上)
  • 5.24数据库作业
  • go-zero 实战(5)
  • Python异常处理:打造你的代码防弹衣!
  • Linux——进程与线程
  • ping 探测网段哪些地址被用
  • OSPF问题
  • asgasgas
  • Go语言实现人脸检测(Go的OpenCV绑定库)
  • springboot中线程池的使用
  • ubuntu20.04 开机自动挂载外加硬盘
  • 5.18 TCP机械臂模拟
  • linux---线程控制
  • 低代码开发:拖拽式可视化构建工业物联网系统
  • 【撸源码】【ThreadPoolExecutor】线程池的工作原理深度解析——上篇
  • webpack 学习之 五大核心
  • Android逆向抓包技巧 - Hook 底层通信
  • 深入解析力扣162题:寻找峰值(线性扫描与二分查找详解)
  • 模板方法及设计模式——Java笔记
  • K8S认证|CKA题库+答案| 11. 创建PVC
  • 多微信如何高效管理?一台电脑就能搞定!
  • 安装harbor出现问题: Running 1/1 ✘ Network harbor_harbor Error
  • JVM解释器和即时编译器的工作原理
  • 【产品经理】输出
  • MySQL入门学习.数据库组成.存储引擎
  • 【算法】分治 - 快速排序
  • 设计模式13——桥接模式
  • 第十六讲:数据在内存中的存储
  • 【EXCEL_VBA_基础知识】15 使用ADO操作外部数据
  • 如何在Spring中配置Bean?