摘要:
题目链接 208. 实现 Trie (前缀树) 思路 模板题 - Trie树 题解链接 官方题解 关键点 无 时间复杂度 \(O(\sum_{i}\#\text{word}_{i})\) 空间复杂度 \(O(\sum_{i}\#\text{word}_{i})\) 代码实现: class Trie: 阅读全文
摘要:
题目链接 720. 词典中最长的单词 思路 Trie树的经典应用 题解链接 官方题解 关键点 构建Trie树 时间复杂度 \(O(\sum_{i}\#\text{word}_{i})\) 空间复杂度 \(O(\sum_{i}\#\text{word}_{i})\) 代码实现: class Trie: 阅读全文
摘要:
题目链接 671. 二叉树中第二小的节点 思路 树的遍历(DFS) 题解链接 官方题解 关键点 利用树的性质进行适当剪枝:1. 树的根节点为全局最小点 2. 父节点的值为该子树的最小值 时间复杂度 \(O(n)\) 空间复杂度 \(O(n)\) 代码实现: class Solution: def f 阅读全文
摘要:
题目链接 404. 左叶子之和 思路 树的遍历(DFS) 题解链接 官方题解 关键点 无 时间复杂度 \(O(n)\) 空间复杂度 \(O(n)\) 代码实现: class Solution: def sumOfLeftLeaves(self, root: Optional[TreeNode]) - 阅读全文
摘要:
题目链接 LCP 44. 开幕式焰火 思路 树的遍历 题解链接 Go DFS+哈希表 关键点 无 时间复杂度 \(O(n)\) 空间复杂度 \(O(n)\) 代码实现: class Solution: def numColor(self, root: TreeNode) -> int: seen = 阅读全文
摘要:
题目链接 872. 叶子相似的树 思路 通过DFS的方式得到树的叶子节点序列 题解链接 官方题解 关键点 yeild from dfs(node.left) 时间复杂度 \(O(n_1+n_2)\) 空间复杂度 \(O(n_1+n_2)\) 代码实现: class Solution: def lea 阅读全文
摘要:
题目链接 145. 二叉树的后序遍历 思路 二叉树的后序遍历-模板题 题解链接 官方题解 关键点 无 时间复杂度 \(O(n)\) 空间复杂度 \(O(n)\) 代码实现: class Solution: def postorderTraversal(self, root: Optional[Tre 阅读全文
摘要:
题目链接 94. 二叉树的中序遍历 思路 二叉树的中序遍历-经典模板题 题解链接 官方题解 关键点 无 时间复杂度 \(O(n)\) 空间复杂度 \(O(n)\) 代码实现: class Solution: def inorderTraversal(self, root: Optional[Tree 阅读全文
摘要:
题目链接 144. 二叉树的前序遍历 思路 二叉树前序遍历-经典模板题 题解链接 官方题解 关键点 无 时间复杂度 \(O(n)\) 空间复杂度 \(O(n)\) 代码实现: class Solution: def preorderTraversal(self, root: Optional[Tre 阅读全文
摘要:
题目链接 457. 环形数组是否存在循环 思路 思维题-快慢指针 题解链接 【负雪明烛】动画题解:快慢指针 关键点 1. 将题意中移动规则抽象为nextpos 2. 限制条件的检查:同号 且 循环节点数量大于\(1\) 3. 鸽巢原理:只需要循环\(n\)次 时间复杂度 \(O(n)\) 空间复杂度 阅读全文
摘要:
题目链接 143. 重排链表 思路 链表综合题:快慢指针(找链表一半位置)+ 链表翻转 题解链接 【视频】没想明白?一个视频讲透!(Python/Java/C++/Go/JS) 关键点 快慢指针:while fast and fast.next: ... && 合并时结束条件:while secon 阅读全文
摘要:
题目链接 2130. 链表最大孪生和 思路 链表综合题:快慢指针 + 指针翻转 题解链接 官方题解 关键点 while fast.next and fast.next.next: ... 时间复杂度 \(O(n)\) 空间复杂度 \(O(1)\) 代码实现: class Solution: def 阅读全文