摘要: 题目链接 LCP 08. 剧情触发时间 思路 前缀和+二分法 题解链接 python 前缀和+二分法 关键点 预处理:前处理得到各个时刻三种资源的累计值(必为升序数组);查找:二分法查找三种资源需要满足的时刻,取三者最大值即可得到答案 时间复杂度 \(O(n)\) 空间复杂度 \(O(n)\) 代码 阅读全文
posted @ 2024-09-10 23:56 WrRan 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 题目链接 911. 在线选举 思路 二分 题解链接 [Python/Java/JavaScript/Go] 二分查找 关键点 理解题意:预处理 - 按照times得出每个离散时刻下获胜者的person;询问 - 二分查找到>t的前一个时刻获胜者 时间复杂度 \(O(n)\) 空间复杂度 \(O(n) 阅读全文
posted @ 2024-09-10 23:44 WrRan 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 题目链接 1818. 绝对差值和 思路 排序+二分 题解链接 运用「二分」找最佳替换方案 关键点 转换为查找最小值delta:对nums1进行排序后,从中二分查找nums2[i]的最接近值(考虑到绝对值,需要检查left & right两个位置) 时间复杂度 \(O(n\log n)\) 空间复杂度 阅读全文
posted @ 2024-09-10 23:26 WrRan 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 题目链接 658. 找到 K 个最接近的元素 思路 二分+双指针 题解链接 官方题解 关键点 二分:查找到第一个>= val的位置;双指针:利用“有序”性质,双指针迭代跟踪left & right的位置 时间复杂度 \(O(\log n + k)\) 空间复杂度 \(O(1)\) 代码实现: cla 阅读全文
posted @ 2024-09-10 23:01 WrRan 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 题目链接 1146. 快照数组 思路 哈希+二分法 题解链接 记录修改历史:哈希表+二分查找(Python/Java/C++/Go/JS/Rust) 关键点 理解题意:查询时要找到<=snap_id的最后一次修改记录 时间复杂度 \(O(\log n)\) 空间复杂度 \(O(n)\) 代码实现: 阅读全文
posted @ 2024-09-10 22:51 WrRan 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 题目链接 981. 基于时间的键值存储 思路 哈希+二分 题解链接 哈希表+二分 关键点 理解题意 时间复杂度 \(O(\log n)\) 空间复杂度 \(O(n)\) 代码实现: class TimeMap: def __init__(self): self.dct = defaultdict(l 阅读全文
posted @ 2024-09-10 22:35 WrRan 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 题目链接 394. 字符串解码 思路 字符串模拟;出现相同子问题,可以使用递归或者栈解决 题解链接 字符串解码(辅助栈法 / 递归法,清晰图解) 关键点 栈:需要存储(重复次数,当前字符串);递归:需要范围 内嵌字符串及结束位置 时间复杂度 \(O(n)\) 空间复杂度 \(O(n)\) 代码实现( 阅读全文
posted @ 2024-09-10 21:07 WrRan 阅读(3) 评论(0) 推荐(0) 编辑