| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> LeetCode每日一题(二分查找) -> 正文阅读 |
|
[数据结构与算法]LeetCode每日一题(二分查找) |
704 题目描述:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 暴力破解法
二分查找法比如在一个有序的数组并且无重复元素的数组中,例如[1, 2, 3, 4, 5, 6],需要查找3的位置就可以使用二分查找
数组长度是偶数还是奇数这个真的不重要,不影响怎么排除的问题,无非是多排除一个数字或者少排除一个数字。真正影响的是中间那个数字到底该不该加入下一次的查找中,也就是边界问题 左闭右闭
左闭右开
35 题目描述:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。 二分查找法
如果没有找到对应的值,则右指针会指向最大小于target的值,左指针指向最小大于target的值 34 题目描述:给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 二分查找法二分查找的基本思想:在一个区间范围里看处在中间位置的元素的值nums[mid]与目标元素target的大小关系,进而决定目标值落在哪一个部分里 目标元素target在有序数组中很可能存在多个 使用二分查找方法看到的处在中间位置的元素的值nums[mid]恰好等于目标元素target的时候,还需要继续查找下去 比较容易陷入的误区是线性查找,正确的做法是继续二分查找 不推荐:
推荐:
69 题目描述:给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。 牛顿迭代法
这种算法的原理很简单,我们仅仅是不断用 ( x , f ( x ) ) 的切线来逼近方程 x 2 ? a = 0 的根。根号 a 实际上就是 x 2 ? a = 0 的一个正实根,这个函数的导数是 2 x 。也就是说,函数上任一点 ( x , f ( x ) ) 处的切线斜率是 2 x 。那么, x ? f ( x ) / ( 2 x ) 就是一个比 x 更接近的近似值。代入 f ( x ) = x 2 ? a 得到 x ? ( x 2 ? a ) / ( 2 x ) ,也就是 ( x + a / x ) / 2 。 这种算法的原理很简单,我们仅仅是不断用 (x,f(x))的切线来逼近方程 x^2?a=0的根。根号 a 实际上就是 x^2?a=0的一个正实根,这个函数的导数是 2x。也就是说,函数上任一点 (x,f(x)) 处的切线斜率是 2x。那么,x?f(x)/(2x)就是一个比 x 更接近的近似值。代入 f(x)=x^2?a得到 x?(x^2?a)/(2x),也就是 (x+a/x)/2。 这种算法的原理很简单,我们仅仅是不断用(x,f(x))的切线来逼近方程x2?a=0的根。根号a实际上就是x2?a=0的一个正实根,这个函数的导数是2x。也就是说,函数上任一点(x,f(x))处的切线斜率是2x。那么,x?f(x)/(2x)就是一个比x更接近的近似值。代入f(x)=x2?a得到x?(x2?a)/(2x),也就是(x+a/x)/2。 二分查找法
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 19:47:51- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |