LeetCode 69. x 的平方根

ops/2024/10/20 11:45:40/

LeetCode 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

二分查找

class Solution:def mySqrt(self, x: int) -> int:if x == 1:return 1left = 1right = xwhile left <= right:mid = (left + right) // 2if mid * mid > x:right = mid - 1elif mid * mid < x:left = mid + 1else:return midreturn left - 1

数学,牛顿迭代,解释见官解

class Solution:def mySqrt(self, x: int) -> int:if x == 0:return 0C, x0 = float(x), float(x)while True:xi = 0.5 * (x0 + C / x0)if abs(x0 - xi) < 1e-7:breakx0 = xireturn int(x0)# 作者:力扣官方题解
# 链接:https://leetcode.cn/problems/sqrtx/solutions/238553/x-de-ping-fang-gen-by-leetcode-solution/
# 来源:力扣(LeetCode)
# 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

如果在本题的基础上要求精确到小数点后6位,则使用牛顿迭代法是一个不错的选择

或者稍微修改一下二分法,说白了就是每次迭代的单位变小即可,注意此时mid同样是个浮点数

class Solution:def mySqrt(self, x: int) -> int:if x == 1:return 1left = 1right = xwhile left <= right:mid = (left + right) / 2if mid * mid > x:right = mid - 0.000001elif mid * mid < x:left = mid + 0.000001else:return midreturn left - 0.000001

http://www.ppmy.cn/ops/118398.html

相关文章

自定义Spring Boot Starter:简化短信服务集成

在现代应用程序中&#xff0c;短信服务是一个常见的需求&#xff0c;用于发送验证码、通知等。为了简化短信服务的集成和配置&#xff0c;我们可以通过自定义Spring Boot Starter来实现。Spring Boot Starter是一种特殊的依赖项&#xff0c;它包含了实现特定功能所需的库和组件…

WPF 绑定 DataGrid 里面 Button点击事件 TextBlock 双击事件

TextBlock双击事件 <DataGridTemplateColumn Width"*" Header"内标"><DataGridTemplateColumn.CellTemplate><DataTemplate><Grid><TextBlockBackground"Transparent"Tag"{Binding InternalId}"Text"…

python的pyinstaller

1、pyinstaller --onefile -w *.py 可以生成可执行文件 -w就是不需要有console窗体出现、 2、 console窗体会出现一些警告。 比如 Warning: QT_DEVICE_PIXEL_RATIO is deprecated. Instead use: QT_AUTO_SCREEN_SCALE_FACTOR to enable platform plugin controlled per-scre…

【STM32】江科大STM32笔记汇总(已完结)

STM32江科大笔记汇总 STM32学习笔记课程简介(01)STM32简介(02)软件安装(03)新建工程(04)GPIO输出(05)LED闪烁& LED流水灯& 蜂鸣器(06)GPIO输入(07)按键控制LED 光敏传感器控制蜂鸣器(08)OLED调试工具(09)OLED显示屏(10)EXTI外部中断(11)对射式红外传感器计次 旋转编码器…

封装axios请求

1、为什么要封装axios 封装axios&#xff0c;对错误信息进行统一处理&#xff0c;能提高代码简洁性&#xff0c;规范代码 2、封装步骤 2.1 创建文件 首先在utils文件夹下新建request.js文件&#xff0c;内容如下。要确保项目已经安装了axios&#xff0c;和element-ui impo…

实现网上超市:SpringBoot技术详解

2 系统开发技术 这部分内容主要介绍本系统使用的技术&#xff0c;包括使用的工具&#xff0c;编程的语言等内容。 2.1 Java语言 Java语言自公元1995年至今&#xff0c;已经超过25年了&#xff0c;依然在软件开发上面有很大的市场占有率。当年Sun公司发明Java就是为了发展一门跨…

【C高级】有关shell脚本的一些练习

目录 1、写一个shell脚本&#xff0c;将以下内容放到脚本中&#xff1a; 2、写一个脚本&#xff0c;包含以下内容&#xff1a; 1、写一个shell脚本&#xff0c;将以下内容放到脚本中&#xff1a; 1、在家目录下创建目录文件&#xff0c;dir 2、dir下创建dir1和dir2 …

pytorch千问模型源码分析

# 规范化技术&#xff0c;旨在替代传统的 Layer Normalization&#xff08;LN&#xff09; # 核心思想是对输入张量的每个样本的每个特征进行规范化&#xff0c;使其均值为 0&#xff0c;方差为 1 class Qwen2RMSNorm(nn.Module): def __init__(self, hidden_size, eps1e-6…