08 2025 档案

摘要:回溯专题其三(子集篇) 一,子集类问题解题思路 子集、组合、分割类问题的回溯框架非常相似,都能抽象为一棵树来遍历解空间。 不同点在于: 组合 / 分割问题:通常在树的 叶子节点 收集结果。 子集问题:则在树的 所有节点 收集结果,因为子集本身没有固定长度限制。 以 子集 78 为例,假设给定一个集合 阅读全文
posted @ 2025-08-31 16:35 雪痕春风天音九重色 阅读(19) 评论(0) 推荐(0)
摘要:一、分割类问题解题思路 分割类问题的特点是: 我们需要在字符串中不断尝试放置“分割线”; 每个切分后得到的子串必须满足一定条件; 当分割线走到字符串末尾时,得到一个完整的方案。 因此,这类问题可以抽象为 在字符串中选择切割点的过程,也可以看作一类特殊的组合问题 回溯函数的核心参数通常是 当前分割线的 阅读全文
posted @ 2025-08-31 13:34 雪痕春风天音九重色 阅读(13) 评论(0) 推荐(0)
摘要:一、回溯理论基础 回溯的概念 回溯(Backtracking)是一种搜索算法,常被称为“回溯搜索”。它本质上是 递归的副产品:在递归过程中不断尝试不同的选择,当某条路径不满足条件时,就 回退到上一步重新选择。因此,有回溯必有递归。 由于回溯法会枚举搜索空间中的所有可能路径(可通过剪枝优化减少无效搜索 阅读全文
posted @ 2025-08-31 11:47 雪痕春风天音九重色 阅读(17) 评论(0) 推荐(0)
摘要:二叉树部分刷题章节总结 一,二叉树基础与遍历 思路归纳: 递归 & 迭代,DFS & BFS 在二叉树中的实现 题单: 二叉树的前序遍历 二叉树的中序遍历 二叉树的后序遍历 二叉树的层序遍历 核心代码实现: 二叉树的三种遍历方式(前中后序)的递归实现思路类似,如前序遍历实现的核心代码如下: def 阅读全文
posted @ 2025-08-26 15:10 雪痕春风天音九重色 阅读(15) 评论(0) 推荐(0)
摘要:Leetcode 530 二叉搜索树的最小绝对差 题目链接: 二叉搜索树的最小绝对差 给定一棵二叉搜索树的根节点,返回该二叉搜索树中任意两个节点之间差值绝对值的最小值。任意两个节点的值都不相同。 思路: 根据二叉搜索树的性质,根节点严格大于左子树中的所有节点,严格小于右子树中的所有节点。因此,二叉搜 阅读全文
posted @ 2025-08-23 19:46 雪痕春风天音九重色 阅读(10) 评论(0) 推荐(0)
摘要:Leetcode 654 最大二叉树 题目链接: 最大二叉树 给定一个不含重复元素的整数数组,据此构建一棵最大二叉树,方法如下: 找出该数组中最大的元素,为其创建一个相应二叉树节点。该元素将该数组分割成两个部分。 从左部分中选取其中最大的元素,作为当前节点的左孩子节点 从右部分中选取其中最大的元素, 阅读全文
posted @ 2025-08-22 20:59 雪痕春风天音九重色 阅读(15) 评论(0) 推荐(0)
摘要:Leetcode 513 找树左下角的值 题目链接: 找树左下角的值 给定一棵二叉树的根节点,返回该二叉树中最后一行最靠左的节点的值。 思路: 本题既可以通过迭代求解,也可以通过递归求解。 若通过迭代法求解,则直接通过层序遍历,遍历整棵二叉树。最后将最后一行的第一个元素取出即可。 若使用递归法求解, 阅读全文
posted @ 2025-08-22 20:10 雪痕春风天音九重色 阅读(7) 评论(0) 推荐(0)
摘要:Leetcode 110 平衡二叉树 题目链接: 平衡二叉树 给定一棵二叉树,检查该二叉树是否为高度平衡的。 所谓高度平衡的二叉树,即为二叉树左右子树的高度差不大于1 思路: 本题通过递归法求解。 利用递归三部曲进行分析: 递归函数参数与返回值 递归函数的参数为当前遍历的节点;返回值为一个整数,即以 阅读全文
posted @ 2025-08-22 16:18 雪痕春风天音九重色 阅读(5) 评论(0) 推荐(0)
摘要:Leetcode 226 翻转二叉树 题目链接: 翻转二叉树 给定一棵二叉树根节点,将二叉树整体进行翻转后,仍然返回其根节点 如对于二叉树 4 / \ 2 7 / \ / \ 1 3 6 9 翻转后得到: 4 / \ 7 2 / \ / \ 9 6 3 1 思路: 观察题目我们知道,我们只需要将二叉 阅读全文
posted @ 2025-08-20 22:31 雪痕春风天音九重色 阅读(9) 评论(0) 推荐(0)
摘要:Leetcode 144 二叉树的前序遍历 题目链接: 二叉树的前序遍历 给定一棵二叉树的根节点,返回该二叉树通过前序遍历得到的节点数组 思路: 首先回忆前序遍历。二叉树的前序遍历,即是将二叉树中节点按照 "中左右" 的顺序进行遍历,得到的节点数组即为前序遍历的结果。 考虑以下二叉树: 1 / \ 阅读全文
posted @ 2025-08-20 16:15 雪痕春风天音九重色 阅读(13) 评论(0) 推荐(0)
摘要:Leetcode 150 逆波兰表达式求解 题目链接: 逆波兰表达式求解 给定一个字符串类型的数组,其中按照逆波兰表示法记录了算术表达式,求解该算术表达式最终的结果。 Example 1: Input: tokens = ["2","1","+","3","*"] Output: 9 Explana 阅读全文
posted @ 2025-08-17 16:30 雪痕春风天音九重色 阅读(8) 评论(0) 推荐(0)
摘要:Leetcode 232 用栈实现队列 题目链接: 用栈实现队列 使用两个栈实现一个队列类,要求实现队列的基本功能: (push, peek, pop, and empty) 思路: 首先我们回忆栈与队列的特征。栈先进后出,队列先进先出。为了用栈模拟队列先进先出的特性,我们需要使用两个栈进行操作,分 阅读全文
posted @ 2025-08-16 21:10 雪痕春风天音九重色 阅读(9) 评论(0) 推荐(0)
摘要:Leetcode 151 翻转字符串中的单词 题目链接: 翻转字符串中的单词 给定一个字符串,如 " The sky is blue",其行首,行尾和单词之间可能存在一个或者多个空格。你需要删去多余空格后,将字符串中单词进行反转,如此处反转后的结果为 "blue is sky The" 思路: 整体 阅读全文
posted @ 2025-08-16 14:58 雪痕春风天音九重色 阅读(16) 评论(0) 推荐(0)
摘要:Leetcode 344 反转字符串 题目链接: 反转字符串 给定一个字符串,要求输出将其反转后的结果 思路: 在部分语言中(如Java和python), 字符串不可变,此时对于字符串的修改需要用到辅助空间,这点在之后的题目中会体现。在本题中,我们既可以使用双指针从字符串两边向中间遍历,遍历过程中交 阅读全文
posted @ 2025-08-14 11:45 雪痕春风天音九重色 阅读(8) 评论(0) 推荐(0)
摘要:Leetcode 484 四数相加II 题目链接: 四数相加II 给定四个长度均为n的数组,从四个数组中分别取一个数,使得四数之和为0,将这四个数组成一个元组。返回最终能够组成的元组的个数。 思路: 由于没有要求对元组进行去重,且四个数组之间相互独立,本题非常适合使用哈希表进行求解。将四个数组分为两 阅读全文
posted @ 2025-08-13 15:55 雪痕春风天音九重色 阅读(11) 评论(0) 推荐(0)
摘要:Leetcode 242 有效的字母异位词 题目链接: 有效的字母异位词 给定两个字符串,判断其中一个字符串是否为另一个字符串的字母异位词(即字母种类和个数均能一一对应,仅位置不同) 例如anagram和nagaram互为彼此的字母异位词 思路: 统计一个字符串中所有字符,再遍历另一个字符串,若发现 阅读全文
posted @ 2025-08-11 20:02 雪痕春风天音九重色 阅读(15) 评论(0) 推荐(0)
摘要:Leetcode 24 两两交换链表节点 题目链接: 两两交换链表节点 给定一个链表,要求两两交换其节点,最后返回其处理完成后的头节点。 如1->3->2->4->5,处理后得到3->1->4->2->5 思路: 本题重点还是明确链表操作过程中,每一步做了什么操作。详情见下图。 在操作链表节点的场景 阅读全文
posted @ 2025-08-09 14:55 雪痕春风天音九重色 阅读(40) 评论(0) 推荐(0)
摘要:Leetcode 203 移除链表元素 题目链接: 移除链表元素 题目要求删除链表中所有特定值的节点。 如 1->2->2->1->3,删去链表中所有的2,预期结果为1->1->3 思路: 当涉及到链表节点操作时,我们首先应该想到使用虚拟头节点 dummyHead。因为无论是插入链表节点还是删去链表 阅读全文
posted @ 2025-08-08 20:43 雪痕春风天音九重色 阅读(77) 评论(0) 推荐(0)
摘要:Leetcode 209 长度最小的子数组 题目链接: 长度最小的子数组 思路: 题目给定一个数组,要求找出数组中满足区间内元素和大于等于给定值的连续区间的最小长度,若不存在满足条件的区间,则返回0。 本题可以通过维护一个滑动窗口解决,通过维护快慢指针,我们可以框定一块区间。 快指针的移动逻辑为: 阅读全文
posted @ 2025-08-07 15:51 雪痕春风天音九重色 阅读(161) 评论(0) 推荐(0)
摘要:Leetcode 704 二分查找 题目链接 704 二分查找 思路: 二分查找的重点在于明确边界条件,初始化索引时是采用左闭右闭区间,还是左闭右开区间,直接影响到更新索引的逻辑。若取区间的方式与更新索引的方式不一致,则容易出错。建议在开始写代码之前先在纸上简单模拟一遍取元素的过程。 假设对于仅包含 阅读全文
posted @ 2025-08-06 16:33 雪痕春风天音九重色 阅读(240) 评论(0) 推荐(0)