二分法


二分法的特点

依赖于递归算法,逐次将区间长度减半,直至无限逼近所求点的方法。

算法的复杂度与区间长度,精度,待求点的位置分布有关


LeetCode 69

实现 int sqrt(int x) 函数。

计算并返回 x 的平方根,其中 x 是非负整数。

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


示例

输入: 4

输出: 2

输入: 8

输出: 2


解题思路

class Solution(object):def dichotomy(self, left, right):delta = right - leftif delta < 1:return leftif right ** 2 > self.x:return self.dichotomy(left, (delta // 2) + left)elif right ** 2 < self.x:return self.dichotomy(right, right + delta)else:return rightdef mySqrt(self, x):self.x = xhalf = (len(str(x)) // 2) + 1return int(self.dichotomy(0, 10 ** half))

利用零点存在性定理,对 i^2 - x 的零点进行定位

其中 i 的范围为0到10^(n/2),n为x的位数

Dichotomy二分法学习笔记相关推荐

  1. 【蓝桥杯学习笔记】9. 解立方根——二分法+牛顿迭代法

    系列文章目录 [蓝桥杯学习笔记]1. 入门基本语法及练习题 [蓝桥杯学习笔记]2. 常用模型----最大公约数和最小公倍数 [蓝桥杯学习笔记]3. 质数判断 [蓝桥杯学习笔记]5. 矩阵乘法 [蓝桥杯 ...

  2. 数据结构学习笔记(六):二叉树(Binary Tree)

    目录 1 背景知识:树(Tree) 2 何为二叉树(Binray Tree) 2.1 二叉树的概念与结构 2.2 满二叉树与完全二叉树 2.3 二叉树的三种遍历方式 3 二叉树及其遍历的简单实现(Ja ...

  3. 数据结构与算法学习笔记之 从0编号的数组

    数据结构与算法学习笔记之 从0编号的数组 前言 数组看似简单,但掌握精髓的却没有多少:他既是编程语言中的数据类型,又是最基础的数据结构: 一个小问题: 为什么数据要从0开始编号,而不是 从1开始呢? ...

  4. C++ STL学习笔记

    C++ STL学习笔记一 为何要学习STL: 数据结构与算法是编程的核心,STL中包含各种数据结构和优秀的算法,确实值得深入学习,本文中虽然着重使用,但希望有心的朋友能多看看相关数据结构的实现,对于C ...

  5. 菜鸟学习笔记:Java提升篇4(容器4——Collections工具类、其他容器)

    菜鸟学习笔记:Java容器4--Collections工具类.其他容器 Collections工具类 容器其他知识点 队列Queue Enumeration接口 Hashtable Propertie ...

  6. C语言程序设计学习笔记:P1-程序设计与C语言

    本系列博客用于记录学习浙江大学翁恺老师的C语言程序设计,系列笔记链接如下: C语言程序设计学习笔记:P1-程序设计与C语言 C语言程序设计学习笔记:P2-计算 C语言程序设计学习笔记:P3-判断 C语 ...

  7. 【学习笔记】使用魔数快速求平方根

    [学习笔记]使用魔数快速求平方根 简介 介绍使用魔数0x1fbd1df5快速求平方根x{\sqrt{x}}x​的C语言实现和公式的推导. 代码 float MagicSqrt(float x) {fl ...

  8. KALI LINUX渗透测试学习笔记

    KALI LINUX渗透测试学习笔记 (苑房弘主讲) 第1章 课程介绍 任务1:Kali Linux渗透测试介绍.exe 安全问题的根源: 分层思想 只求功能实现 最大的威胁是人 渗透测试: 尝试挫败 ...

  9. Java基础学习笔记(二)_Java核心技术(进阶)

    本篇文章的学习资源来自Java学习视频教程:Java核心技术(进阶)_华东师范大学_中国大学MOOC(慕课) 本篇文章的学习笔记即是对Java核心技术课程的总结,也是对自己学习的总结 文章目录 Jav ...

最新文章

  1. java.lang.reflect.InaccessibleObjectException: Unable to make
  2. 思科交换机PXE响应巨慢,甚至无响应问题
  3. 基于struts2+hibernate+spring(ssh2)的登录验证码的实现
  4. <script>放在head内和body内有什么区别
  5. 【seata系列】centos服务器带你踩坑搭建seata以及解决MySQL8.0无法启动问题
  6. linux终奌站 信息 格式 更改 /etc/bashrc
  7. Swift 与众不同的地方
  8. Leetcode每日一题:42.trapping-rain-water(接雨水)
  9. linux svn 搭建
  10. Handler+MessageQueue等操作
  11. 【网络编程】Socket网络编程基础
  12. Viewpage+Fragment
  13. 数字共享平台赋能船舶行业数字化转型——CSBC,搭建行业数字生态链
  14. 汽车CAN总线思维导图
  15. 中文 Uncode 编码范围
  16. 小米平板2(2015716)官方线刷包_救砖包_解账户锁
  17. 中钰睿泓分享:设计LOGO的思路和流程
  18. 怎么分析出京东快递物流多次派件的单号
  19. Modern Robotics读书笔记(一)
  20. d3.js操作svg

热门文章

  1. 笑过后值得思考的一些编程语录----------搞笑却真实
  2. 50个好网站,从此上网不再虚度!
  3. 华为云主机安全防护的新发现
  4. 瑞莎 Renesas Flash烧录
  5. [转]Go语言(Golang)的Web框架比较:gin VS echo
  6. 2 机器学习入门——逻辑回归之kaggle泰坦尼克号竞赛
  7. 神级总结:报价英文函电的常用金句
  8. 生死看淡,不服就GAN(九)----英伟达力作PGGAN实战,生成高清图片
  9. “无法识别的USB设备”如何解决
  10. Excel如何一键删除重复行?Leo老师告诉你