随笔分类 - LeetCode
摘要:题目链接 872. 叶子相似的树 思路 通过DFS的方式得到树的叶子节点序列 题解链接 官方题解 关键点 yeild from dfs(node.left) 时间复杂度 空间复杂度 代码实现: class Solution: def lea
阅读全文
摘要:题目链接 145. 二叉树的后序遍历 思路 二叉树的后序遍历-模板题 题解链接 官方题解 关键点 无 时间复杂度 空间复杂度 代码实现: class Solution: def postorderTraversal(self, root: Optional[Tre
阅读全文
摘要:题目链接 94. 二叉树的中序遍历 思路 二叉树的中序遍历-经典模板题 题解链接 官方题解 关键点 无 时间复杂度 空间复杂度 代码实现: class Solution: def inorderTraversal(self, root: Optional[Tree
阅读全文
摘要:题目链接 144. 二叉树的前序遍历 思路 二叉树前序遍历-经典模板题 题解链接 官方题解 关键点 无 时间复杂度 空间复杂度 代码实现: class Solution: def preorderTraversal(self, root: Optional[Tre
阅读全文
摘要:题目链接 457. 环形数组是否存在循环 思路 思维题-快慢指针 题解链接 【负雪明烛】动画题解:快慢指针 关键点 1. 将题意中移动规则抽象为nextpos 2. 限制条件的检查:同号 且 循环节点数量大于 3. 鸽巢原理:只需要循环 次 时间复杂度 空间复杂度
阅读全文
摘要:题目链接 143. 重排链表 思路 链表综合题:快慢指针(找链表一半位置)+ 链表翻转 题解链接 【视频】没想明白?一个视频讲透!(Python/Java/C++/Go/JS) 关键点 快慢指针:while fast and fast.next: ... && 合并时结束条件:while secon
阅读全文
摘要:题目链接 2130. 链表最大孪生和 思路 链表综合题:快慢指针 + 指针翻转 题解链接 官方题解 关键点 while fast.next and fast.next.next: ... 时间复杂度 空间复杂度 代码实现: class Solution: def
阅读全文
摘要:题目链接 142. 环形链表 II 思路 快慢指针-经典应用:相遇后,移动head及slow直至相遇 题解链接 没想明白?一个视频讲透!含数学推导(Python/Java/C++/Go/JS) 关键点 while fast and fast.next: ... && while head != sl
阅读全文
摘要:题目链接 141. 环形链表 思路 快慢指针-经典问题 题解链接 没想明白?一个视频讲透快慢指针!(Python/Java/C++/Go/JS) 关键点 while fast and fast.next: ... 时间复杂度 空间复杂度 代码实现: class S
阅读全文
摘要:题目链接 234. 回文链表 思路 链表综合题:快慢指针 + 指针翻转 题解链接 官方题解 关键点 while fast.next and fast.next.next: ... 时间复杂度 空间复杂度 代码实现: class Solution: def isPa
阅读全文
摘要:题目链接 2095. 删除链表的中间节点 思路 快慢指针-找到中间节点-简单扩展 题解链接 官方题解 关键点 while fast and fast.next: ... 时间复杂度 空间复杂度 代码实现: class Solution: def deleteMid
阅读全文
摘要:题目链接 876. 链表的中间结点 思路 快慢指针-经典应用题 题解链接 没想明白?一个视频讲透!(Python/Java/C++/Go/JS/Rust) 关键点 while fast and fast.next: ... 时间复杂度 空间复杂度 代码实现: cl
阅读全文
摘要:题目链接 2385. 感染二叉树需要的总时间 思路 识别为“树的直径” 题解链接 从两次遍历到一次遍历(Python/Java/C++/Go/JS/Rust) 关键点 1. 返回值为(感染时间, 是否包含感染源) 2. 分为三种情况:本节点为感染源、左儿子(或右儿子)为感染源、该子树无感染源 时间复
阅读全文
摘要:题目链接 124. 二叉树中的最大路径和 思路 “树的直径”&“树形DP” 题解链接 【视频】彻底掌握直径 DP!从二叉树到一般树!(Python/Java/C++/Go) 关键点 经典的树形DP:当前状态为左右儿子与当前节点值之和,返回时注意应当返回 \(\max(0, v + \max(v_{l
阅读全文
摘要:题目链接 687. 最长同值路径 思路 “树的直径”的简单变体 题解链接 【视频】彻底掌握直径 DP!从二叉树到一般树!(Python/Java/C++/Go) 关键点 注意维护当前状态:当左二子的值与本节点值不同时,要更新 时间复杂度 空间复杂度 \(O
阅读全文
摘要:题目链接 543. 二叉树的直径 思路 经典模板题 题解链接 【视频】彻底掌握直径 DP!从二叉树到一般树!(Python/Java/C++/Go) 关键点 1. 空节点返回 2. 本节点回收子节点结果时需要 3. 返回给父节点时是取\(\max(v_{l}, v_{r})\
阅读全文
摘要:题目链接 817. 链表组件 思路 链表-思维题 题解链接 官方题解 关键点 题意可以转换为:1. 节点的值在nums中且节点位于起始位置 2. 节点的值在nums中且前一个节点不在nums中 时间复杂度 空间复杂度 代码实现: class Solution: d
阅读全文
摘要:题目链接 725. 分隔链表 思路 链表-模拟 题解链接 Python 模拟 关键点 1. 算链表长度 2. 计算余数 3. 落入余数部分应当多放1一个节点 时间复杂度 空间复杂度 代码实现: class Solution: def splitListToPart
阅读全文
摘要:题目链接 2181. 合并零之间的节点 思路 链表-删除节点 题解链接 原地做法,O(1) 空间(Python/Java/C++/C/Go/JS) 关键点 无 时间复杂度 空间复杂度 代码实现: class Solution: def mergeNodes(sel
阅读全文
摘要:题目链接 2058. 找出临界点之间的最小和最大距离 思路 模拟 题解链接 一次遍历 + 常数空间 关键点 无 时间复杂度 空间复杂度 代码实现: class Solution: def nodesBetweenCriticalPoints(self, head:
阅读全文