| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 二分查找汇总 -> 正文阅读 |
|
[数据结构与算法]二分查找汇总 |
目录 为什么模板要取 while( l < r),而不是while( l <= r)? while循环结束条件是l >= r,但为什么二分结束时我们优先取r而不是l? 完善中.................................................................................... 一、相关知识0. 二分查找特点:单调区间(非绝对单调,可有相等值) 数组:满足随机存取 时间复杂度O(lonN) 1. 二分查找题型
2. 边界问题
标准二分查找模板
二分查找边界问题模板
什么时候用模板1?什么时候用模板2?模板1和模板2的差别: 在于等号是和大于在一起还是小于在一起,以左边界举例的话就是每次边界收缩时 l指针mid+1左侧的mid一定是小于target的,这就保证了循环结束时 L指针的左侧必定和自己相异 求左边界问题用模板2:如果左边界l要更新为 l = mid,此时我们就要使用模板2,让 mid = (l + r + 1)/ 2,否则while会陷入死循环。 右边界问题用模板1:如果左边界l更新为l = mid + 1,此时我们就使用模板1,让mid = (l + r)/2。 为什么模板要取 while( l < r),而不是while( l <= r)?本质上取l < r和 l <= r是没有任何区别的,如果取l <= r,只需要修改对应的更新区间即可。 while循环结束条件是l >= r,但为什么二分结束时我们优先取r而不是l?二分的while循环的结束条件是l >= r,所以在循环结束时l有可能会大于r,此时就可能导致越界,因此,基本上二分问题优先取r都不会翻车。 二、LeetCode题型:.....................................完善中...............................................611. 有效三角形的个数(Medium)
双指针法: 首先对数组排序。
875.爱吃香蕉的珂珂(Medium)?
1011.在D天内送达包裹的能力(Medium) |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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:48:12- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |