二分
info
二分的难点不在于二分的循环过程,而在于如何确定二分搜索域以及确定是否满足题意的check函数。
💡注意:check函数满足题意返回true,求最小是r = mid,求最大是l = mid。
- 34. 在排序数组中查找元素的第一个和最后一个位置
- 35. 搜索插入位置
- 704. 二分查找
- 744. 寻找比目标字母大的最小字母
- 2529. 正整数和负整数的最大计数
- 1385. 两个数组间的距离值
- 2300. 咒语和药水的成功对数 1477
- 2389. 和有限的最长子序列
- 1170. 比较字符串最小字母出现频次
- 2080. 区间内查询数字的频率 1702
- 2563. 统计公平数对的数目 1721
- 2856. 删除数对后的最小数组长度 - 力扣(LeetCode) (重点关注证明过程)
- 981. 基于时间的键值存储 - 力扣(LeetCode) 数据结构题
- 1146. 快照数组 - 力扣(LeetCode)数据结构题
- 1438. 绝对差不超过限制的最长连续子数组 - 力扣(LeetCode) (善用红黑树)
- 658. 找到 K 个最接近的元素 - 力扣(LeetCode)
- 1818. 绝对差值和 - 力扣(LeetCode)
- 911. 在线选举 - 力扣(LeetCode) 即使暴力遍历二分查找也会超时,学会预处理
- LCP 08. 剧情触发时间 - 力扣(LeetCode) 需要明确哪个是查找条件哪个是带查找对象
找最小
- 1283. 使结果不超过阈值的最小除数 1542
- 2187. 完成旅途的最少时间 1641
- 1870. 准时到达的列车最小时速 1676
- 1011. 在 D 天内送达包裹的能力 1725 注意搜索域的确定
- 875. 爱吃香蕉的珂珂 1766
- 3296. 移山所需的最少秒数 二分思路注意等价为所有工人并行操作
- 475. 供暖器 常规思路是二分半径r,简单的想法是关注最近的两个供暖器
- 2594. 修车的最少时间 1915 同3296
- 1482. 制作 m 束花所需的最少天数 1946 搜索天数的情况下查看如何满足要求
- 3048. 标记所有下标的最早秒数 I 2263 理解题意为
- 考试复习,有助于写出check函数,考试的时间越晚越好,这样我们能有更充足的时间复习(存在单调性)
找最大
info
💡注意:check函数满足题意返回true,求最小是r = mid,求最大是l = mid。对于开区间写法,简单来说 check(mid) == true 时更新的是谁,最后就返回谁。
- 275. H 指数 II
- 2226. 每个小孩最多能分到多少糖果 1646
- 2982. 找出出现至少三次的最长特殊子字符串 II 1773 (对于每种字符单独统计所有长度,然后在每个字- 符框架下进行二分查找)
- 2576. 求出最多标记下标 1843
- 1898. 可移除字符的最大数目 1913
- 1802. 有界数组中指定下标处的最大值 重点是如何统计给定max(num[index])下的数组和
- 1642. 可以到达的最远建筑 1962 贪心的思想