随笔分类 - LeetCode
摘要:题目链接 1290. 二进制链表转整数 思路 链表遍历 题解链接 官方题解 关键点 无 时间复杂度 空间复杂度 代码实现: class Solution: def getDecimalValue(self, head: ListNode) -> int: answ
阅读全文
摘要:题目链接 LCP 08. 剧情触发时间 思路 前缀和+二分法 题解链接 python 前缀和+二分法 关键点 预处理:前处理得到各个时刻三种资源的累计值(必为升序数组);查找:二分法查找三种资源需要满足的时刻,取三者最大值即可得到答案 时间复杂度 空间复杂度 代码
阅读全文
摘要:题目链接 911. 在线选举 思路 二分 题解链接 [Python/Java/JavaScript/Go] 二分查找 关键点 理解题意:预处理 - 按照times得出每个离散时刻下获胜者的person;询问 - 二分查找到>t的前一个时刻获胜者 时间复杂度 空间复杂度 \(O(n)
阅读全文
摘要:题目链接 1818. 绝对差值和 思路 排序+二分 题解链接 运用「二分」找最佳替换方案 关键点 转换为查找最小值delta:对nums1进行排序后,从中二分查找nums2[i]的最接近值(考虑到绝对值,需要检查left & right两个位置) 时间复杂度 空间复杂度
阅读全文
摘要:题目链接 658. 找到 K 个最接近的元素 思路 二分+双指针 题解链接 官方题解 关键点 二分:查找到第一个>= val的位置;双指针:利用“有序”性质,双指针迭代跟踪left & right的位置 时间复杂度 空间复杂度 代码实现: cla
阅读全文
摘要:题目链接 1146. 快照数组 思路 哈希+二分法 题解链接 记录修改历史:哈希表+二分查找(Python/Java/C++/Go/JS/Rust) 关键点 理解题意:查询时要找到<=snap_id的最后一次修改记录 时间复杂度 空间复杂度 代码实现:
阅读全文
摘要:题目链接 981. 基于时间的键值存储 思路 哈希+二分 题解链接 哈希表+二分 关键点 理解题意 时间复杂度 空间复杂度 代码实现: class TimeMap: def __init__(self): self.dct = defaultdict(l
阅读全文
摘要:题目链接 394. 字符串解码 思路 字符串模拟;出现相同子问题,可以使用递归或者栈解决 题解链接 字符串解码(辅助栈法 / 递归法,清晰图解) 关键点 栈:需要存储(重复次数,当前字符串);递归:需要范围 内嵌字符串及结束位置 时间复杂度 空间复杂度 代码实现(
阅读全文
摘要:题目链接 2563. 统计公平数对的数目 思路 排序+二分(upper_bound - lower_bound) 题解链接 两种方法:二分查找 / 三指针(Python/Java/C++/Go) 关键点 排序并不影响答案(数对数量未变化) 时间复杂度 空间复杂度 \(O
阅读全文
摘要:题目链接 2080. 区间内查询数字的频率 思路 二分法(upper_bound - lower_bound) 题解链接 简洁写法:统计位置+二分查找(Python/Java/C++/Go/JS/Rust) 关键点 预先处理得到每个值所处位置的列表 时间复杂度
阅读全文
摘要:题目链接 1170. 比较字符串最小字母出现频次 思路 题意不易理解;排序+二分(upper_bound) 题解链接 Python简洁解法 关键点 预先处理words 时间复杂度 空间复杂度 代码实现: class Solution: def numSm
阅读全文
摘要:题目链接 2389. 和有限的最长子序列 思路 贪心+排序+二分 题解链接 非暴力做法:前缀和 + 二分查找 + 原地 O(1) 空间(Python/Java/C++/Go) 关键点 1. 贪心:由于元素和有上限,为了能让子序列尽量长,子序列中的元素值越小越好。 2. 本题要求计算元素和,因此元素在
阅读全文
摘要:题目链接 2300. 咒语和药水的成功对数 思路 排序+二分 题解链接 排序 + 二分(Python/Java/C++/Go/JS/Rust) 关键点 \(xy\ge s \Rightarrow y\ge \lceil \frac{s}{x} \rceil \Rightarrow y > \lflo
阅读全文
摘要:题目链接 1385. 两个数组间的距离值 思路 二分查找 题解链接 官方题解 关键点 标准库的利用;二分循环不变式(开区间):nums[left] < target && nums[right] >= target 时间复杂度 空间复杂度 代码
阅读全文
摘要:题目链接 2529. 正整数和负整数的最大计数 思路 二分法 题解链接 标准库调用 关键点 0的处理 时间复杂度 空间复杂度 代码实现: class Solution: def maximumCount(self, nums: List[int]) ->
阅读全文
摘要:题目链接 744. 寻找比目标字母大的最小字母 思路 二分法 题解链接 官方题解 关键点 循环不变量(开区间):letters[left] < target && letters[right] >= target 时间复杂度 空间复杂度 代码实现: cl
阅读全文
摘要:题目链接 704. 二分查找 思路 二分法 题解链接 二分查找总是写不对?一个视频讲透!(Python/Java/C++/Go) 关键点 循环不变量(开区间):nums[left] < target && nums[right] >= target 时间复杂度 空间复杂度
阅读全文
摘要:题目链接 35. 搜索插入位置 思路 二分查找 题解链接 二分查找总是写不对?一个视频讲透!(Python/Java/C++/C/Go/JS/Rust) 关键点 排序数组 => 二分查找 时间复杂度 空间复杂度 代码实现(开区间写法): class So
阅读全文
摘要:题目链接 34. 在排序数组中查找元素的第一个和最后一个位置 思路 二分法 题解链接 【视频讲解】二分查找总是写不对?三种写法,一个视频讲透!(Python/Java/C++/C/Go/JS) 关键点 模板题;应当熟练掌握 时间复杂度 空间复杂度 代码实
阅读全文