LeetCode 208. 实现 Trie (前缀树) 208. 实现 Trie (前缀树)解题思路使用 26 叉树来实现前缀树,每个节点包含一个长度为 26 的数组 children,用于存储指向子节点的指针,以及一个布尔值 isEnd,用于标记是否有单词以该节点结尾。 2026-02-08 LeetCode #哈希表 #字符串 #字典树 #设计
LeetCode 215. 数组中的第K个最大元素 215. 数组中的第K个最大元素解题思路使用一个最小堆来维护当前最大的K个元素。遍历数组中的每个元素,将其加入堆中,如果堆的大小超过K,则移除堆顶元素(即当前最小的元素)。最终,堆顶元素就是第K个最大的元素。 当前时间复杂度为: $O(n \log k)$,其中n是数组的长度,k是需要找到的第K个最大元素的数量。空间复杂度为: $O(k)$,因为堆中最多存储K个元素。 题解。如果需要优化时间复杂度 2026-02-08 LeetCode #排序 #数组 #分治 #快速选择 #堆(优先队列)
LeetCode 226. 翻转二叉树 226. 翻转二叉树解题思路采用递归后序遍历,先翻转左右子树,再将当前节点的左右子节点指针互换,空节点直接返回 2026-02-08 LeetCode #树 #深度优先搜索 #广度优先搜索 #二叉树
LeetCode 230. 二叉搜索树中第K小的元素 230. 二叉搜索树中第K小的元素解题思路对于二叉搜索树来说,中序遍历就是从小到大遍历节点值,所以遍历到第 k 个节点即是答案 2026-02-08 LeetCode #树 #深度优先搜索 #二叉树 #二叉搜索树
LeetCode 234. 回文链表 234. 回文链表解题思路首先找到链表中点,对中点及以后的链表进行反转,分别对比左右两端节点的值是否相等 2026-02-08 LeetCode #双指针 #栈 #链表 #递归
LeetCode 236. 二叉树的最近公共祖先 236. 二叉树的最近公共祖先解题思路 如果当前节点是空节点,返回 null 如果 p 或者 q 为根节点,返回根节点 分别递归查找左右子树中的 p、q 若左右子树都非空,说明 p、q 分居当前节点两侧,当前节点就是最近公共祖先,返回它 若只有一侧非空,说明 p、q 都在这一侧,返回该侧的查找结果;两侧都空则返回 null 2026-02-08 LeetCode #树 #深度优先搜索 #二叉树
LeetCode 239. 滑动窗口最大值 239. 滑动窗口最大值解题思路这是一个降本增笑的故事: 如果新员工比老员工强(或者一样强),把老员工裁掉。(元素进入窗口)如果老员工 35 岁了,也裁掉。(元素离开窗口)裁员后,资历最老(最左边)的人就是最强的员工了。 单调队列 右边入队,保持单调递减 左边出,对应的索引超出窗口的范围[i - k + 1, i],出队 2026-02-08 LeetCode #数组 #堆(优先队列) #队列 #滑动窗口 #单调队列