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

每日一题(LeetCode)----二分查找(三)

每日一题(LeetCode)----二分查找(三)

1.题目(69. x 的平方根 )

给你一个非负整数 x ,计算并返回 x算术平方根

由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。

**注意:**不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5

示例 1:

输入:x = 4
输出:2

示例 2:

输入:x = 8
输出:2
解释:8 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。

提示:

  • 0 <= x <= 231 - 1

2.解题思路

思路一: 二分

利用二分的思想,二分的范围最开始就是从0开始到目标数结束

然后我们进行二分,如果我们找到的数的平方比目标数小,那么我们的答案为当前找到的数,然后二分范围的左边界找到的当前数右边的位置,继续进行二分

如果我们如果我们找到的数的平方比目标数大,那么二分范围的右边界变为找到的当前数左边的位置,继续进行二分

直到左边界比右边界大了,结束操作

思路二: 袖珍计算器算法(来源于牛客官方解答)

在这里插入图片描述

思路三: 牛顿迭代(来源于牛客官方解答)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.代码

思路一的代码:

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

思路二的代码:

class Solution {
public:int mySqrt(int x) {if (x == 0) {return 0;}int ans = exp(0.5 * log(x));return ((long long)(ans + 1) * (ans + 1) <= x ? ans + 1 : ans);}
};作者:力扣官方题解
链接:https://leetcode.cn/problems/sqrtx/
来源:力扣(LeetCode)

思路三的代码:

class Solution {
public:int mySqrt(int x) {if (x == 0) {return 0;}double C = x, x0 = x;while (true) {double xi = 0.5 * (x0 + C / x0);if (fabs(x0 - xi) < 1e-7) {break;}x0 = xi;}return int(x0);}
};作者:力扣官方题解
链接:https://leetcode.cn/problems/sqrtx/
来源:力扣(LeetCode)
http://www.lryc.cn/news/216665.html

相关文章:

  • 使用 TensorFlow FasterRCNN 网络进行目标检测
  • 数据结构——顺序表(SeqList)
  • Uni-App 快捷登录
  • DbUtils + Druid 实现 JDBC 操作 --- 附BaseDao
  • css:元素居中整理水平居中、垂直居中、水平垂直居中
  • 从零开始的目标检测和关键点检测(二):训练一个Glue的RTMDet模型
  • React18新特性?
  • 筹码博弈K线长阳选股公式,穿越筹码密集区
  • 微服务设计模式-架构真题(六十八)
  • LeetCode----52. N 皇后 II
  • 解决pycharm中,远程服务器上文件找不到的问题
  • 虹科荣誉 | 喜讯!虹科成功入选“广州首届百家新锐企业”!!
  • 如何利用Jmeter从0到1做一次完整的压测?这2个步骤很关键!
  • 基于STM32+微信小程序设计的智能门锁(4种开锁方式)_2023
  • 享受户外的美好时光:花园吊椅的魅力
  • 游戏中找不到d3dx9_43.dll怎么办,教你快速解决方法
  • 蓝桥杯:买不到的数目
  • Nginx简介,Nginx搭载负载均衡以及Nginx部署前端项目
  • QT5.15.2搭建Android编译环境及使用模拟器调试(全)
  • npm install报 ERESOLVE unable to resolve dependency tree
  • CentOS 7上创建Python 3虚拟环境
  • B端设计必看的9个开源组件库,值得收藏!
  • 王坚院士:云计算与 GPT 的关系,就是电和电动机的关系
  • Git代码合并流程规范
  • 编译cef114.2 with h264
  • A股风格因子看板 (2023.11第01期)
  • Session+Cookie实现登录认证
  • mac matplotlib显示中文
  • python自动化测试模板
  • MySQL 外连接和内连接的查询优化怎么做?