摘要:
题目链接 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: ... 时间复杂度 \(O(n)\) 空间复杂度 \(O(1)\) 代码实现: class S 阅读全文
摘要:
题目链接 234. 回文链表 思路 链表综合题:快慢指针 + 指针翻转 题解链接 官方题解 关键点 while fast.next and fast.next.next: ... 时间复杂度 \(O(n)\) 空间复杂度 \(O(1)\) 代码实现: class Solution: def isPa 阅读全文
摘要:
题目链接 2095. 删除链表的中间节点 思路 快慢指针-找到中间节点-简单扩展 题解链接 官方题解 关键点 while fast and fast.next: ... 时间复杂度 \(O(n)\) 空间复杂度 \(O(1)\) 代码实现: class Solution: def deleteMid 阅读全文
摘要:
题目链接 876. 链表的中间结点 思路 快慢指针-经典应用题 题解链接 没想明白?一个视频讲透!(Python/Java/C++/Go/JS/Rust) 关键点 while fast and fast.next: ... 时间复杂度 \(O(n)\) 空间复杂度 \(O(1)\) 代码实现: cl 阅读全文
摘要:
概念 函数\(W(x)\)若在区间\((a, b)\)可积,且\(W(x)\ge 0\),则可以作为权函数。 对于一个多项式的序列\(f_i\)和权函数\(W(x)\),定义内积:\(\langle f_m, f_n\rangle = \int_{a}^{b} f_m(x) f_n(x) W(x) 阅读全文
摘要:
题目链接 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) 关键点 注意维护当前状态:当左二子的值与本节点值不同时,要更新\(v_{l} = 0\) 时间复杂度 \(O(n)\) 空间复杂度 \(O 阅读全文
摘要:
题目链接 543. 二叉树的直径 思路 经典模板题 题解链接 【视频】彻底掌握直径 DP!从二叉树到一般树!(Python/Java/C++/Go) 关键点 1. 空节点返回\(-1\) 2. 本节点回收子节点结果时需要\(+1\) 3. 返回给父节点时是取\(\max(v_{l}, v_{r})\ 阅读全文
摘要:
题目链接 817. 链表组件 思路 链表-思维题 题解链接 官方题解 关键点 题意可以转换为:1. 节点的值在nums中且节点位于起始位置 2. 节点的值在nums中且前一个节点不在nums中 时间复杂度 \(O(n)\) 空间复杂度 \(O(m)\) 代码实现: class Solution: d 阅读全文
摘要:
题目链接 725. 分隔链表 思路 链表-模拟 题解链接 Python 模拟 关键点 1. 算链表长度 2. 计算余数 3. 落入余数部分应当多放1一个节点 时间复杂度 \(O(n)\) 空间复杂度 \(O(1)\) 代码实现: class Solution: def splitListToPart 阅读全文
摘要:
题目链接 2181. 合并零之间的节点 思路 链表-删除节点 题解链接 原地做法,O(1) 空间(Python/Java/C++/C/Go/JS) 关键点 无 时间复杂度 \(O(n)\) 空间复杂度 \(O(1)\) 代码实现: class Solution: def mergeNodes(sel 阅读全文
摘要:
题目链接 2058. 找出临界点之间的最小和最大距离 思路 模拟 题解链接 一次遍历 + 常数空间 关键点 无 时间复杂度 \(O(n)\) 空间复杂度 \(O(1)\) 代码实现: class Solution: def nodesBetweenCriticalPoints(self, head: 阅读全文
摘要:
题目链接 1290. 二进制链表转整数 思路 链表遍历 题解链接 官方题解 关键点 无 时间复杂度 \(O(n)\) 空间复杂度 \(O(1)\) 代码实现: class Solution: def getDecimalValue(self, head: ListNode) -> int: answ 阅读全文