x的平方根

概述:给你一个非负整数 x ,计算并返回 x 的算术平方根 。由于返回类型是整数,结果只保留整数部分,小数部分将被舍去。注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。

输入:x = 4
输出:2输入:x = 8
输出:2

方法一:二分查找

思路:二分查找的下界为 0 ,上界可以粗略地设定为 x 。在二分查找的每一步中,我们只需要比较中间元素 mid 的平方与 的大小关系,并通过比较的结果调整上下界的范围。由于我们所有的运算都是整数运算,不会存在误差,因此在得到最终的答案 ans 后,也就不需要再去尝试 ans+1 了。

# 二分查找
class Solution:def mySqrt(self, x: int) -> int:left = 0 # 下界right = x # 上界ans = -1 # 返回值while left <= right:mid = (left + right) // 2if mid * mid <= x:ans = midleft = mid + 1else:right = mid - 1return ans

方法二:牛顿迭代法

思路:牛顿迭代法的本质是借助泰勒级数,从初始值开始快速向零点逼近。我们选择 x0 = C 作为初始值。在进行 i 次迭代后,xi 的值与真实的零点 0.5 ** C 足够接近,即可作为答案。

# 牛顿迭代法
class Solution:def mySqrt(self, x: int) -> int:if x == 0:return 0c = x0 = float(x)while True:xi = 0.5 * (x0 + c / x0)if abs(x0 - x1) < 1e-7: # 1e-7为无穷小breakx0 = xireturn int(xi)

总结

牛顿,永远滴神!

LeetCode(Python)—— x的平方根(简单)相关推荐

  1. LeetCode Python实现 二叉树简单部分

    LeetCode Python实现 二叉树简单部分 ''' 1 二叉树的最大深度 给定一个二叉树,找出其最大深度.二叉树的深度为根节点到最远叶子节点的最长路径上的节点数.说明: 叶子节点是指没有子节点 ...

  2. LeetCode Python实现 链表简单部分

    LeetCode Python实现 链表简单部分 我以前完全没有写过关于链表的东西,node.val=node.next.val#当前值被后一个值覆盖node.next=node.next.next# ...

  3. LeetCode #69 x的平方根 二分查找

    LeetCode #69 x的平方根 题目描述 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍 ...

  4. LeetCode 69. x 的平方根:二分查找法实现自定义的函数:x 的平方根

    LeetCode 69. x 的平方根:二分查找法实现自定义的函数:x 的平方根 题目描述 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型 ...

  5. 使用Python,OpenCV实现简单的场景边界/拍摄转换检测器

    使用Python,OpenCV进行简单的场景边界/拍摄转换检测器 1. 效果图 2. 实现 2.1 步骤 2.2 什么是"场景边界"和"拍摄过渡"? 2.3 代 ...

  6. python tkinter库、添加gui界面_使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)...

    使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二),创建一个,界面,布局,文件,路径 使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二) ...

  7. python m http_非常简单的Python HTTP服务

    如果因为某种需求急需一个web服务器,而又不至于去在httpd和nginx中配置一个新的虚拟主机,Python或许可以帮上这个临时的小需求. 使用Python可以完成一个简单的内建 HTTP 服务器. ...

  8. python的变量和简单的数据类型

    决定学习python这门语言了,本人资质愚钝,只会把学到的东西记录下来,供自己查漏补缺,也可以分享给和我一样正在学习python语言的人,若在记录中存在什么错误,希望多多批评指正,谢谢. Python ...

  9. 怎么进入python官网-Python的安装及简单的使用

    原标题:Python的安装及简单的使用 像我们想要抓住一门好的编程语言,如何开始学习呢?我来简单介绍下python Python特性:语法简单,入门上手快,很多女神也在学习,方便找个编程的妹纸---- ...

  10. php和python哪个学起来简单一点-作为初学者,php,python和ruby应学哪个?

    [IT168 评论]对于web开发初学者来说,最大的问题就是学习哪种编程语言更适合未来的职业发展并且更有前景.你要考虑都有哪些编程语言,各自的优缺点是什么.每种编程语言的学习周期有多长等问题.互联网上 ...

最新文章

  1. 基于跨国人口流动数据的新冠病毒传播途径分析
  2. SqlServer 数据库 建立子账号
  3. vue动态获取元素距离页面顶部的高度_VUE如何实时监听元素距离顶部高度
  4. QT学习笔记之QTableView设置属性的方法
  5. vue实例没有挂载到html上,VueJS-将数据发送到Vue实例以用于挂载()
  6. java 设计模式 示例_Java中的中介器设计模式-示例教程
  7. 使用winform来递归实现资源管理器
  8. 信息学奥赛一本通(2063:【例1.4】牛吃牧草)
  9. android画板笔锋实现
  10. linux 下librtmp源码,linux下基于libRTMP的接收流媒体的程序
  11. 8.22 今日头条笔试
  12. 【知乎热议】如何看待Momenta研发总监任少卿去了蔚来汽车?
  13. x299服务器芯片,X299比X399差在哪? 两大平台产品比拼
  14. jQuery Validate使用记录
  15. 语文音乐计算机的英语怎么读,音乐英语怎么读
  16. 万变不离其宗之反射原理篇
  17. xp系统整个计算机非常慢,xp系统桌面右键菜单非常慢很久才显示的图文方法
  18. 使用 closest 和 matches 方法来检测元素是否存在某选择器
  19. Ajax小实例   用户注册异步验证
  20. [论文解读]Bayesian Generalized Kernel Inference for Terrain Traversability Mapping

热门文章

  1. 福特无人驾驶自动驾驶战略布局Xmind思维导图(有哪些大公司有无人驾驶?自动驾驶前沿)
  2. vueUpload图片上传
  3. C++ 11(2.0)新特性 09(RValue Reference ROV技术)
  4. 07-Redis投票系统
  5. 把无线路由器设置为AP
  6. 位bit, 字节byte, K ,M,G关系
  7. 漫画B-tree 与B+tree
  8. 在Excel表中增加引用列的一些技巧
  9. 2.4G WiFi标准发展
  10. 计算机专业电子技术基础教学,计算机专业电子技术基础课程教学内容的组织