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