Dichotomy二分法学习笔记
二分法
二分法的特点
依赖于递归算法,逐次将区间长度减半,直至无限逼近所求点的方法。
算法的复杂度与区间长度,精度,待求点的位置分布有关
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二分法学习笔记相关推荐
- 【蓝桥杯学习笔记】9. 解立方根——二分法+牛顿迭代法
系列文章目录 [蓝桥杯学习笔记]1. 入门基本语法及练习题 [蓝桥杯学习笔记]2. 常用模型----最大公约数和最小公倍数 [蓝桥杯学习笔记]3. 质数判断 [蓝桥杯学习笔记]5. 矩阵乘法 [蓝桥杯 ...
- 数据结构学习笔记(六):二叉树(Binary Tree)
目录 1 背景知识:树(Tree) 2 何为二叉树(Binray Tree) 2.1 二叉树的概念与结构 2.2 满二叉树与完全二叉树 2.3 二叉树的三种遍历方式 3 二叉树及其遍历的简单实现(Ja ...
- 数据结构与算法学习笔记之 从0编号的数组
数据结构与算法学习笔记之 从0编号的数组 前言 数组看似简单,但掌握精髓的却没有多少:他既是编程语言中的数据类型,又是最基础的数据结构: 一个小问题: 为什么数据要从0开始编号,而不是 从1开始呢? ...
- C++ STL学习笔记
C++ STL学习笔记一 为何要学习STL: 数据结构与算法是编程的核心,STL中包含各种数据结构和优秀的算法,确实值得深入学习,本文中虽然着重使用,但希望有心的朋友能多看看相关数据结构的实现,对于C ...
- 菜鸟学习笔记:Java提升篇4(容器4——Collections工具类、其他容器)
菜鸟学习笔记:Java容器4--Collections工具类.其他容器 Collections工具类 容器其他知识点 队列Queue Enumeration接口 Hashtable Propertie ...
- C语言程序设计学习笔记:P1-程序设计与C语言
本系列博客用于记录学习浙江大学翁恺老师的C语言程序设计,系列笔记链接如下: C语言程序设计学习笔记:P1-程序设计与C语言 C语言程序设计学习笔记:P2-计算 C语言程序设计学习笔记:P3-判断 C语 ...
- 【学习笔记】使用魔数快速求平方根
[学习笔记]使用魔数快速求平方根 简介 介绍使用魔数0x1fbd1df5快速求平方根x{\sqrt{x}}x的C语言实现和公式的推导. 代码 float MagicSqrt(float x) {fl ...
- KALI LINUX渗透测试学习笔记
KALI LINUX渗透测试学习笔记 (苑房弘主讲) 第1章 课程介绍 任务1:Kali Linux渗透测试介绍.exe 安全问题的根源: 分层思想 只求功能实现 最大的威胁是人 渗透测试: 尝试挫败 ...
- Java基础学习笔记(二)_Java核心技术(进阶)
本篇文章的学习资源来自Java学习视频教程:Java核心技术(进阶)_华东师范大学_中国大学MOOC(慕课) 本篇文章的学习笔记即是对Java核心技术课程的总结,也是对自己学习的总结 文章目录 Jav ...
最新文章
- java.lang.reflect.InaccessibleObjectException: Unable to make
- 思科交换机PXE响应巨慢,甚至无响应问题
- 基于struts2+hibernate+spring(ssh2)的登录验证码的实现
- <script>放在head内和body内有什么区别
- 【seata系列】centos服务器带你踩坑搭建seata以及解决MySQL8.0无法启动问题
- linux终奌站 信息 格式 更改 /etc/bashrc
- Swift 与众不同的地方
- Leetcode每日一题:42.trapping-rain-water(接雨水)
- linux svn 搭建
- Handler+MessageQueue等操作
- 【网络编程】Socket网络编程基础
- Viewpage+Fragment
- 数字共享平台赋能船舶行业数字化转型——CSBC,搭建行业数字生态链
- 汽车CAN总线思维导图
- 中文 Uncode 编码范围
- 小米平板2(2015716)官方线刷包_救砖包_解账户锁
- 中钰睿泓分享:设计LOGO的思路和流程
- 怎么分析出京东快递物流多次派件的单号
- Modern Robotics读书笔记(一)
- d3.js操作svg