【宫水三叶】简单二分运用题
二分
给定的数组「有序」,找到比 $target$ 大的最小字母,容易想到二分。
唯一需要注意的是,二分结束后需要再次 check,如果不满足,则取数组首位元素。
代码:
###Java
class Solution {
public char nextGreatestLetter(char[] letters, char target) {
int n = letters.length;
int l = 0, r = n - 1;
while (l < r) {
int mid = l + r >> 1;
if (letters[mid] > target) r = mid;
else l = mid + 1;
}
return letters[r] > target ? letters[r] : letters[0];
}
}
- 时间复杂度:$O(\log{n})$
- 空间复杂度:$O(1)$
加餐 & 其他「二分」
今日份加餐 【综合笔试题】两种强有力的字符串处理方式 🎉🎉
或者继续学习「二分」相关内容 🍭🍭🍭
不太清楚 check 的大于小于怎么确定的可以重点看看这篇:
| 题目 | 题解 | 难度 | 推荐指数 |
|---|---|---|---|
| 4. 寻找两个正序数组的中位数 | LeetCode 题解链接 | 困难 | 🤩🤩🤩🤩 |
| 29. 两数相除 | LeetCode 题解链接 | 中等 | 🤩🤩🤩 |
| 74. 搜索二维矩阵 | LeetCode 题解链接 | 中等 | 🤩🤩🤩🤩 |
| 220. 存在重复元素 III | LeetCode 题解链接 | 中等 | 🤩🤩🤩 |
| 354. 俄罗斯套娃信封问题 | LeetCode 题解链接 | 困难 | 🤩🤩🤩 |
| 363. 矩形区域不超过 K 的最大数值和 | LeetCode 题解链接 | 困难 | 🤩🤩🤩 |
| 852. 山脉数组的峰顶索引 | LeetCode 题解链接 | 简单 | 🤩🤩🤩🤩🤩 |
| 1004. 最大连续1的个数 III | LeetCode 题解链接 | 中等 | 🤩🤩🤩 |
| 1208. 尽可能使字符串相等 | LeetCode 题解链接 | 中等 | 🤩🤩🤩 |
| 1482. 制作 m 束花所需的最少天数 | LeetCode 题解链接 | 中等 | 🤩🤩🤩 |
| 1707. 与数组中元素的最大异或值 | LeetCode 题解链接 | 困难 | 🤩🤩🤩 |
| 1751. 最多可以参加的会议数目 II | LeetCode 题解链接 | 困难 | 🤩🤩🤩 |
注:以上目录整理来自 wiki,任何形式的转载引用请保留出处。
最后
如果有帮助到你,请给题解点个赞和收藏,让更多的人看到 ~ ("▔□▔)/
也欢迎你 关注我 和 加入我们的「组队打卡」小群 ,提供写「证明」&「思路」的高质量题解。
所有题解已经加入 刷题指南,欢迎 star 哦 ~