云计算百科
云计算领域专业知识百科平台

一轮复习——D.二分查找模型总结

特点:找数+二段性

时间复杂度O(logN)

本质:只要有二段性就可以用二分,而非仅局限于有序

比如D.二分查找-二分答案-求最小——3639. 变为活跃状态的最小时间和D.二分查找-二分答案-求最大——1898. 可移除字符的最大数目就未必有序,但存在二段性(可以理解为单调性),一样可以二分

思维导图概览

👉处理边界思路模板来源

二分查找

以下两种模型中,目标位置设为target,循环结束时left和right指向同一位置

如果target为确定值,则left和right会停在t1位置

否则left和right会停在t2位置

mid在最左端点的左边、mid在最右端点的右边的条件要自己分析着写

注:最左端点模型和最右端点模型针对整型二分,浮点二分直接mid=(left+right)/2即可

求最左端点模型

①目标位置:第一个大于等于target的位置

②mid靠左:int mid=left+(right-left)/2;

③if(mid在最左端点的左边) 让最左端点的左边往里靠,还要超过:

if(s[mid]<t) left=mid+1;

else 另一边靠过来就行:right=mid;

④返回值:left和right均可(因为会重合)

求最右端点模型

①目标位置:最后一个小于等于target的位置

②mid靠右:int mid=left+(right-left+1)/2;

③if(mid在最右端点的右边) 让最右端点的右边往里靠,还要超过:

if(s[mid]<t) right=mid-1;

else 另一边靠过来就行:left=mid;

④返回值:left和right均可(因为会重合)

模型使用步骤

①问题是否具有二段性

②确定目标值是否是个确定值,根据问题选择模型

③确定left和right共同指向的最终位置

④最终位置不符题意时进行边界处理调整,原理参考👇

D.二分查找-进阶——1170. 比较字符串最小字母出现频次

基础

题目已给排序

题目及解析👇

优选算法-二分:18.在排序数组中查找元素的第一个和最后一个位置

优选算法-二分:19.搜索插入位置

优选算法-二分:17.二分查找

D.二分查找-基础——744. 寻找比目标字母大的最小字母

D.二分查找-基础-2529. 正整数和负整数的最大计数

进阶

部分题目需要先排序,然后在有序数组上二分查找

题目及解析👇

D.二分查找-进阶——2300. 咒语和药水的成功对数

D.二分查找-进阶——1385. 两个数组间的距离值

D.二分查找-进阶——2389. 和有限的最长子序列

D.二分查找-进阶——1170. 比较字符串最小字母出现频次

D.二分查找-进阶——2080.区间内查询数字的频率

D.二分查找-进阶——3488. 距离最小相等元素查询

D.二分查找-进阶——981. 基于时间的键值存储

D.二分查找-进阶——658. 找到 K 个最接近的元素

D.二分查找-进阶——1287. 有序数组中出现次数超过25%的元素

D.二分查找-进阶——2476. 二叉搜索树最近节点查询

二分答案

在此题型中我们只需要关注三个东西:两个变量+一个逻辑👇

①目标条件:题目要求达到的变量

②目标变量:调节目标条件的变量,也是我们需要二分的变量

③转换逻辑:目标变量通过转换逻辑与目标条件联系起来

目标条件随着目标变量单调变化,可以是正相关也可以是负相关

check方法就是转换逻辑的体现,具体返回值取决于怎么定义

(1)如果符合目标条件返回true,对应二分模型中就是mid不动(最左端点模型right=mid、最右端点模型left=mid),比如👇

D.二分查找-二分答案-求最大——1898. 可移除字符的最大数目

D.二分查找-二分答案-求最大——1802. 有界数组中指定下标处的最大值

(2)如果要顺着二分的调整来,那么就正好跟(1)相反,对应二分模型中就是mid向里靠(最左端点模型left=mid+1、最右端点模型right=mid-1)

下方我的博客题解一开始大多是(2)的写法,顺着二分模型调整而返回的,自1898题开始时(1)的写法,大家一开始理解方便可以采用(1)的写法,也可以对比理解

正相关的题目比如👇

D.二分查找-二分答案-求最小——2187.完成旅途的最少时间

D.二分查找-二分答案-求最小——3296. 移山所需的最少秒数

第 175 场双周赛Q2——3824. 减小数组使其满足条件的最小 K 值

D.二分查找-二分答案-求最小——3639. 变为活跃状态的最小时间

D.二分查找-二分答案-求最小——475. 供暖器

A.每日一题——3453. 分割正方形 I(拿最左端点分析,越大越符合条件,就是正相关单调)

D.二分查找-二分答案-求最大——1898. 可移除字符的最大数目

D.二分查找-二分答案-最小化最大值——2560. 打家劫舍 IV

D.二分查找-二分答案-最小化最大值——LCP 12. 小张刷题计划

D.二分查找-二分答案-第K小/第K大——668. 乘法表中第k小的数(模板题)

D.二分查找-二分答案-第K小/第K大——378. 有序矩阵中第 K 小的元素

D.二分查找-二分答案-第K小/第K大——719. 找出第 K 小的数对距离

D.二分查找-二分答案-第K小/第K大——878. 第 N 个神奇数字

D.二分查找-二分答案-第K小/第K大——1201. 丑数 III

D.二分查找-二分答案-第K小/第K大——793. 阶乘函数后 K 个零

负相关的题目比如👇

D.二分查找-二分答案-求最小——1283. 使结果不超过阈值的最小除数(模板题)

D.二分查找-二分答案-求最小——1011. 在 D 天内送达包裹的能力

D.二分查找-二分答案-求最小——875. 爱吃香蕉的珂珂

D.二分查找-二分答案-求最小——1870. 准时到达的列车最小时速

D.二分查找-二分答案——275. H 指数 II

D.二分查找-二分答案-求最大——2226. 每个小孩最多能分到多少糖果

D.二分查找-二分答案-求最大——2982. 找出出现至少三次的最长特殊子字符串 II

D.二分查找-二分答案-求最大——1802. 有界数组中指定下标处的最大值

D.二分查找-二分答案-求最大——3143. 正方形中的最多点数

D.二分查找-二分答案-最小化最大值——410. 分割数组的最大值(模板题)

D.二分查找-二分答案-最小化最大值——2064. 分配给商店的最多商品的最小值

D.二分查找-二分答案-最小化最大值——1760. 袋子里最少数目的球

D.二分查找-二分答案-最小化最大值——2439. 最小化数组中的最大值

D.二分查找-二分答案-最大化最小值——3281. 范围内整数的最大得分(模板题)

D.二分查找-二分答案-最大化最小值——2517. 礼盒的最大甜蜜度

D.二分查找-二分答案-最大化最小值——1552. 两球之间的磁力

求最小

在此题型中,通常采用最左端点模型找最小(也叫第一个符合的)

题目及解析👇

D.二分查找-二分答案-求最小——278. 第一个错误的版本(模板题)

D.二分查找-二分答案-求最小——1283. 使结果不超过阈值的最小除数

D.二分查找-二分答案-求最小——2187.完成旅途的最少时间

D.二分查找-二分答案-求最小——1011. 在 D 天内送达包裹的能力

D.二分查找-二分答案-求最小——875. 爱吃香蕉的珂珂

D.二分查找-二分答案-求最小——3296. 移山所需的最少秒数

第 175 场双周赛Q2——3824. 减小数组使其满足条件的最小 K 值

D.二分查找-二分答案-求最小——3639. 变为活跃状态的最小时间

D.二分查找-二分答案-求最小——475. 供暖器

D.二分查找-二分答案-求最小——1870. 准时到达的列车最小时速

A.每日一题——3453. 分割正方形 I

D.二分查找-二分答案——275. H 指数 II

求最大

在此题型中,通常采用最右端点模型找最大(也叫最后一个符合的)

题目及其解析👇

D.二分查找-二分答案——275. H 指数 II

D.二分查找-二分答案-求最大——2226. 每个小孩最多能分到多少糖果

D.二分查找-二分答案-求最大——2982. 找出出现至少三次的最长特殊子字符串 II

D.二分查找-二分答案-求最大——2576. 求出最多标记下标

D.二分查找-二分答案-求最大——1898. 可移除字符的最大数目

D.二分查找-二分答案-求最大——1802. 有界数组中指定下标处的最大值

D.二分查找-二分答案-求最大——3143. 正方形中的最多点数

最小化最大值

本质:求最小

题目及解析👇

D.二分查找-二分答案-最小化最大值——410. 分割数组的最大值(模板题)

D.二分查找-二分答案-最小化最大值——2064. 分配给商店的最多商品的最小值

D.二分查找-二分答案-最小化最大值——1760. 袋子里最少数目的球

D.二分查找-二分答案-最小化最大值——2439. 最小化数组中的最大值

D.二分查找-二分答案-最小化最大值——2560. 打家劫舍 IV

D.二分查找-二分答案-最小化最大值——LCP 12. 小张刷题计划

最大化最小值

本质:求最大

题目及解析👇

D.二分查找-二分答案-最大化最小值——3281. 范围内整数的最大得分(模板题)

D.二分查找-二分答案-最大化最小值——2517. 礼盒的最大甜蜜度

D.二分查找-二分答案-最大化最小值——1552. 两球之间的磁力

第K小/第K大

第K小/第K大问题转换方法:(注意以下是至少≠恰好)

第K小=求最小的x,满足≤x的数至少K个

第K大=求最大的x,满足≥x的数至少K个

解释为啥不是恰好:因为满足至少时,说明当前mid一定符合条件,缩小范围时会缩小到mid处,而mid一定合法,只有不符合时才会越过mid去寻找合法的,并且也顺带着解决了元素相同的问题,因此要用至少

题目及解析👇

D.二分查找-二分答案-第K小/第K大——668. 乘法表中第k小的数(模板题)

D.二分查找-二分答案-第K小/第K大——378. 有序矩阵中第 K 小的元素

D.二分查找-二分答案-第K小/第K大——719. 找出第 K 小的数对距离

D.二分查找-二分答案-第K小/第K大——878. 第 N 个神奇数字

D.二分查找-二分答案-第K小/第K大——1201. 丑数 III

D.二分查找-二分答案-第K小/第K大——793. 阶乘函数后 K 个零

其他

题目及解析👇

优选算法-二分:20.x的平方根

优选算法-二分:21.山峰数组的峰顶

优选算法-二分:22.寻找峰值

优选算法-二分:23.搜索旋转排序数组中的最小值

优选算法-二分:24.0~n-1中缺失的数字

D.二分查找-二分答案-其他——74. 搜索二维矩阵

D.二分查找-二分答案-其他——374. 猜数字大小

D.二分查找-二分答案-其他——540. 有序数组中的单一元素+LCR 070. 有序数组中的单一元素

D.二分查找-二分答案-其他——1539. 第 k 个缺失的正整数

赞(0)
未经允许不得转载:网硕互联帮助中心 » 一轮复习——D.二分查找模型总结
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!