<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[m0_64698089的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/m0_64698089</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; m0_64698089]]></copyright><item><title><![CDATA[动态规划入门]]></title><link>https://blog.youkuaiyun.com/m0_64698089/article/details/157128603</link><guid>https://blog.youkuaiyun.com/m0_64698089/article/details/157128603</guid><author>m0_64698089</author><pubDate>Mon, 19 Jan 2026 09:21:05 +0800</pubDate><description><![CDATA[摘要： 动态规划（DP）通过分解重叠子问题并存储解来优化计算，其核心是状态转移方程。以斐波那契数列（LeetCode 509）为例，定义dp[i]为第i个斐波那契数，递推公式为dp[i]=dp[i-1]+dp[i-2]，空间可优化至O(1)。爬楼梯问题（LeetCode 70）类似，递推公式相同但初始值不同。最小花费爬楼梯（LeetCode 746）在爬楼梯基础上引入费用权重，递推时取最小花费。三者均需明确状态定义、转移方程和边界条件，并通过滚动变量优化空间。动态规划的关键在于识别子问题间的递推关系，适用于]]></description><category></category></item><item><title><![CDATA[贪心算法深化 III]]></title><link>https://blog.youkuaiyun.com/m0_64698089/article/details/157128496</link><guid>https://blog.youkuaiyun.com/m0_64698089/article/details/157128496</guid><author>m0_64698089</author><pubDate>Mon, 19 Jan 2026 09:15:30 +0800</pubDate><description><![CDATA[本文介绍了两个贪心算法问题的解题思路：合并区间和单调递增数字。合并区间问题通过排序后逐个合并重叠区间解决，关键步骤是排序和动态更新右边界。单调递增数字问题采用从后往前遍历，找到破坏递增的位置后调整数字并置9。文章总结了贪心算法的核心思想（局部最优到全局最优）、常见解题步骤（排序、找边界、遍历处理）和典型题型策略，强调通过案例验证和拆解问题来应用贪心算法。最后指出贪心算法虽无固定模板，但通过积累解题经验可以培养解题直觉。]]></description><category></category></item><item><title><![CDATA[贪心算法深化 II]]></title><link>https://blog.youkuaiyun.com/m0_64698089/article/details/157128463</link><guid>https://blog.youkuaiyun.com/m0_64698089/article/details/157128463</guid><author>m0_64698089</author><pubDate>Mon, 19 Jan 2026 09:13:35 +0800</pubDate><description><![CDATA[本文介绍了三个贪心算法问题的解题思路和Java实现： 用最少数量的箭引爆气球： 按气球右边界排序，贪心策略是优先射穿右边界最小的气球 遍历时若气球左边界超过当前箭位置则新增箭 时间复杂度O(nlogn)，空间复杂度O(1) 无重叠区间： 按区间右边界排序，优先保留右边界小的区间 统计最多保留的不重叠区间数，最少删除数=总数-保留数 时间复杂度O(nlogn)，空间复杂度O(1) 划分字母区间： 记录每个字母最后出现位置，遍历时动态扩展当前区间右边界 当遍历到当前右边界时划分新区间 时间复杂度O(n)，空间复]]></description><category></category></item><item><title><![CDATA[贪心算法深化 I]]></title><link>https://blog.youkuaiyun.com/m0_64698089/article/details/157128424</link><guid>https://blog.youkuaiyun.com/m0_64698089/article/details/157128424</guid><author>m0_64698089</author><pubDate>Mon, 19 Jan 2026 09:11:48 +0800</pubDate><description><![CDATA[本文介绍了四个贪心算法问题的解题思路和代码实现： 加油站问题：通过全局油量判断和局部贪心选择起点，找到能绕行所有加油站的起点。 分发糖果问题：分两次遍历处理左右规则，保证评分高的孩子获得更多糖果。 柠檬水找零问题：优先使用大面额找零，保留小面额应对后续需求。 身高重建队列问题：先处理高个子并按k值插入，确保满足前面有k个更高人的要求。 每个问题都体现了贪心算法的核心思想：通过局部最优选择达到全局最优解。代码实现清晰展示了如何将解题思路转化为具体算法。]]></description><category></category></item><item><title><![CDATA[贪心算法进阶]]></title><link>https://blog.youkuaiyun.com/m0_64698089/article/details/157128380</link><guid>https://blog.youkuaiyun.com/m0_64698089/article/details/157128380</guid><author>m0_64698089</author><pubDate>Mon, 19 Jan 2026 09:09:17 +0800</pubDate><description><![CDATA[本文总结了四道贪心算法题的解题思路与Java实现： 买卖股票II：通过累加所有正差价获得最大利润，无需考虑完整买卖波段。 跳跃游戏：维护当前能到达的最远位置，若遍历时超过该位置则失败，否则更新最远可达位置。 跳跃游戏II：在当前步范围内寻找下一步最远位置，到达边界时增加步数，确保最少跳跃次数。 K次取反最大和：优先反转最小负数，剩余奇数次时反转最小正数，通过两次排序确保最优解。 各解法均采用贪心策略，通过局部最优选择达到全局最优，时间复杂度多为O(n)或O(nlogn)。关键点在于识别问题中的贪心性质并设计]]></description><category></category></item><item><title><![CDATA[贪心算法入门]]></title><link>https://blog.youkuaiyun.com/m0_64698089/article/details/156911128</link><guid>https://blog.youkuaiyun.com/m0_64698089/article/details/156911128</guid><author>m0_64698089</author><pubDate>Wed, 14 Jan 2026 08:46:29 +0800</pubDate><description><![CDATA[摘要：本文介绍了三个贪心算法问题的解法。1. 分发饼干：通过排序孩子胃口和饼干尺寸数组，用双指针匹配最小能满足的饼干，时间复杂度O(mlogm+nlogn)。2. 摆动序列：通过捕捉极值点统计最长摆动子序列，时间复杂度O(n)。3. 最大子序和：当子序和为负时重置，维护当前和最大值，时间复杂度O(n)。三个问题均采用贪心策略，通过局部最优选择达到全局最优，代码实现简洁高效。]]></description><category></category></item><item><title><![CDATA[回溯算法深化 II]]></title><link>https://blog.youkuaiyun.com/m0_64698089/article/details/156911080</link><guid>https://blog.youkuaiyun.com/m0_64698089/article/details/156911080</guid><author>m0_64698089</author><pubDate>Tue, 13 Jan 2026 18:47:39 +0800</pubDate><description><![CDATA[本文对比分析了几种经典回溯算法问题的解题思路：1. 递增子序列（491题）强调不能排序但需用Set层内去重；2. 全排列（46/47题）展示了有无重复元素时的处理差异，47题通过排序和used数组实现去重；3. 高难度回溯题（如N皇后、解数独）的二维递归特点。核心差异体现在：组合/子集用startIndex控制顺序，排列用used数组标记元素，去重方式根据是否可排序分为层内Set或排序跳过。文章提供了各题型的剪枝条件、复杂度分析和代码模板，帮助系统掌握回溯算法的应用场景和优化技巧。]]></description><category></category></item><item><title><![CDATA[回溯算法深化 I]]></title><link>https://blog.youkuaiyun.com/m0_64698089/article/details/156911035</link><guid>https://blog.youkuaiyun.com/m0_64698089/article/details/156911035</guid><author>m0_64698089</author><pubDate>Tue, 13 Jan 2026 18:42:11 +0800</pubDate><description><![CDATA[本文介绍了三个回溯算法相关的LeetCode题目解法：1. 复原IP地址：使用回溯法分段切割字符串，验证每段合法性（0-255范围、无前导零），通过剪枝优化效率；2. 子集问题（无重复元素）：收集递归树所有节点的结果，通过startIndex避免重复子集；3. 子集II（含重复元素）：在排序基础上，跳过同一层的重复元素实现去重。关键点包括：IP地址的合法性验证、子集问题的节点收集时机，以及处理重复元素的排序和跳过策略。时间复杂度均为指数级，空间复杂度为线性。]]></description><category></category></item><item><title><![CDATA[回溯算法进阶]]></title><link>https://blog.youkuaiyun.com/m0_64698089/article/details/156767968</link><guid>https://blog.youkuaiyun.com/m0_64698089/article/details/156767968</guid><author>m0_64698089</author><pubDate>Fri, 09 Jan 2026 16:50:33 +0800</pubDate><description><![CDATA[本文解析了LeetCode中三道经典回溯算法题目。39题（组合总和）通过回溯实现元素可重复选取的组合搜索，递归时保持startIndex不变；40题（组合总和II）在元素不可重复使用的基础上，通过排序和条件判断实现去重；131题（分割回文串）将字符串分割转化为回溯问题，通过回文判断筛选有效分割方案。三题均采用回溯框架，核心区别在于选择列表的控制（是否允许重复选取、是否需要去重）和终止条件的设置。解题时需注意：1）通过startIndex避免组合重复；2）及时剪枝提升效率；3）回溯时要恢复状态。这些题目展示了]]></description><category></category></item><item><title><![CDATA[回溯算法入门]]></title><link>https://blog.youkuaiyun.com/m0_64698089/article/details/156729165</link><guid>https://blog.youkuaiyun.com/m0_64698089/article/details/156729165</guid><author>m0_64698089</author><pubDate>Fri, 09 Jan 2026 16:46:59 +0800</pubDate><description><![CDATA[本文系统介绍了回溯算法的理论基础及其在组合问题中的应用。回溯算法通过递归实现穷举搜索，利用剪枝优化效率，适用于组合、排列等需要遍历所有可能解的问题。文章详细解析了三个典型例题：77题（基础组合）展示了回溯模板和剪枝优化；216题（组合总和）增加了和的条件判断；17题（电话号码字母组合）演示了多维度的组合处理。关键要点包括：固定回溯框架（终止条件-遍历候选-处理/递归/回溯）、剪枝优化的重要性、参数设计的灵活性，以及结果收集时的注意事项。这三道题目由浅入深，完整呈现了回溯算法的核心思想和应用技巧。]]></description><category></category></item><item><title><![CDATA[二叉树深化 VI]]></title><link>https://blog.youkuaiyun.com/m0_64698089/article/details/156726862</link><guid>https://blog.youkuaiyun.com/m0_64698089/article/details/156726862</guid><author>m0_64698089</author><pubDate>Thu, 08 Jan 2026 15:55:03 +0800</pubDate><description><![CDATA[本文介绍了三道二叉搜索树（BST）相关算法题的解题思路。108题将有序数组转换为高度平衡BST，采用分治递归方法，每次选取中间元素作为根节点。538题将BST转换为累加树，通过反向中序遍历和累加变量实现节点值更新。669题修剪BST，根据节点值与范围的关系递归处理左右子树。三道题目均充分利用BST的特性：有序性、中序遍历特点，通过递归分治思想高效解决问题。核心解法都体现了递归在树结构问题中的典型应用模式。]]></description><category></category></item><item><title><![CDATA[二叉树深化 V]]></title><link>https://blog.youkuaiyun.com/m0_64698089/article/details/156711611</link><guid>https://blog.youkuaiyun.com/m0_64698089/article/details/156711611</guid><author>m0_64698089</author><pubDate>Thu, 08 Jan 2026 09:25:04 +0800</pubDate><description><![CDATA[本文介绍了二叉搜索树(BST)的三种核心操作：查找最近公共祖先、插入节点和删除节点。对于最近公共祖先问题，利用BST有序特性通过递归或迭代快速定位；插入操作通过递归或迭代找到合适位置直接插入；删除操作需处理四种情况，尤其当节点有左右子树时，需用后继/前驱节点替代再删除。所有操作时间复杂度均为O(h)，其中h为树高。这些操作充分利用了BST左小右大的特性，是理解和应用BST的基础。]]></description><category></category></item><item><title><![CDATA[二叉树深化 IV]]></title><link>https://blog.youkuaiyun.com/m0_64698089/article/details/156609530</link><guid>https://blog.youkuaiyun.com/m0_64698089/article/details/156609530</guid><author>m0_64698089</author><pubDate>Mon, 05 Jan 2026 16:22:01 +0800</pubDate><description><![CDATA[本文总结了二叉搜索树（BST）和二叉树的三类经典问题解法：1. 530题利用BST中序有序特性，通过双指针记录前后节点差值，递归/迭代实现O(n)时间、O(h)空间复杂度的最小绝对差求解。2. 501题基于BST中序连续相同元素特性，动态统计频率并更新众数集合，递归实现高效众数查找。3. 236题采用后序遍历回溯，通过递归返回值判断最近公共祖先，适用于普通二叉树。三题均体现了二叉树遍历的核心思想（中序、后序）和递归技巧，时间复杂度均为O(n)，空间复杂度为树高O(h)。]]></description><category></category></item><item><title><![CDATA[二叉树深化 III]]></title><link>https://blog.youkuaiyun.com/m0_64698089/article/details/156544011</link><guid>https://blog.youkuaiyun.com/m0_64698089/article/details/156544011</guid><author>m0_64698089</author><pubDate>Sat, 03 Jan 2026 20:31:34 +0800</pubDate><description><![CDATA[本文总结了四道二叉树相关算法题的解题思路与实现方法： 654.最大二叉树：通过前序遍历构造二叉树，优化版使用下标索引减少空间消耗，时间复杂度O(n²)，空间优化至O(h)。 617.合并二叉树：递归法采用前序遍历合并节点值，迭代法通过队列同步处理节点，注意空节点处理，时间复杂度O(n)。 700.二叉搜索树搜索：利用BST特性定向搜索，递归和迭代法均实现O(h)时间复杂度，迭代法空间最优为O(1)。 98.验证BST：核心是利用中序遍历的有序性，提供递归、迭代和区间约束三种解法，特别注意处理边界值和重复元素]]></description><category></category></item><item><title><![CDATA[二叉树深化 II]]></title><link>https://blog.youkuaiyun.com/m0_64698089/article/details/156543911</link><guid>https://blog.youkuaiyun.com/m0_64698089/article/details/156543911</guid><author>m0_64698089</author><pubDate>Sat, 03 Jan 2026 20:19:04 +0800</pubDate><description><![CDATA[本文总结了二叉树相关的三个经典算法问题及其解法： 513.找树左下角的值 迭代法：层序遍历记录每层第一个节点，最后保留最底层第一个节点 递归法：深度优先遍历，优先访问左子树，记录首次到达更深层时的节点值 112/113.路径总和 112基础版：递归减和，在叶子节点判断剩余值是否匹配 113进阶版：回溯法记录路径，注意结果集需要复制当前路径避免后续修改 106/105.构造二叉树 核心思路：中序序列确定左右子树范围，后序/前序序列确定根节点位置 关键技巧：使用哈希表加速查找，注意子树索引的精确计算 每个问题都]]></description><category></category></item><item><title><![CDATA[二叉树深化]]></title><link>https://blog.youkuaiyun.com/m0_64698089/article/details/156460202</link><guid>https://blog.youkuaiyun.com/m0_64698089/article/details/156460202</guid><author>m0_64698089</author><pubDate>Wed, 31 Dec 2025 16:13:00 +0800</pubDate><description><![CDATA[本文摘要：文章讲解了四道二叉树相关算法题的解题思路与实现方法。110题通过后序遍历计算节点高度，用-1标记不平衡子树；257题采用前序遍历+回溯记录路径，注意撤销选择操作；404题强调左叶子定义，通过父节点判断并累加；222题区分普通二叉树和完全二叉树的解法，后者利用满二叉树特性优化。核心要点包括：根据需求选择遍历顺序，正确处理递归终止条件，回溯时撤销选择，以及利用二叉树特性优化性能。代码实现均采用递归方式，时间复杂度从O(n)到O(logn)不等。]]></description><category></category></item><item><title><![CDATA[二叉树进阶]]></title><link>https://blog.youkuaiyun.com/m0_64698089/article/details/156430882</link><guid>https://blog.youkuaiyun.com/m0_64698089/article/details/156430882</guid><author>m0_64698089</author><pubDate>Tue, 30 Dec 2025 21:22:05 +0800</pubDate><description><![CDATA[本文总结了二叉树相关问题的递归解法：翻转二叉树采用后序遍历交换左右子树；对称二叉树通过镜像比较左右子树；最大深度计算根节点高度；最小深度需区分叶子节点情况。关键点在于理解递归三要素（参数/返回值、终止条件、单层逻辑）和遍历顺序的选择（前序/后序），避免中序遍历导致的重复操作。对于最小深度，需注意单支树的特殊情况处理。递归解法简洁高效，层序遍历可作为备选方案。掌握这些核心思路能有效解决二叉树常见问题。]]></description><category></category></item><item><title><![CDATA[二叉树入门]]></title><link>https://blog.youkuaiyun.com/m0_64698089/article/details/156430249</link><guid>https://blog.youkuaiyun.com/m0_64698089/article/details/156430249</guid><author>m0_64698089</author><pubDate>Tue, 30 Dec 2025 19:58:47 +0800</pubDate><description><![CDATA[本文系统介绍了二叉树的遍历方法，包含递归和迭代两种实现方式。首先定义了Java中的二叉树节点类，然后详细讲解了三种深度优先遍历（前序、中序、后序）的递归实现，强调调整节点处理顺序即可实现不同遍历。接着介绍了使用栈的迭代实现方法，包括前序的&quot;中右左&quot;入栈顺序、中序的指针遍历左子树到底，以及后序通过前序调整后反转结果的技巧。还介绍了统一迭代法，使用空节点标记区分访问和处理节点。最后讲解了层序遍历的队列实现，重点在于记录每层节点数进行逐层处理。所有方法均提供了完整的Java代码实现。]]></description><category></category></item><item><title><![CDATA[栈和队列进阶 | 150. 逆波兰表达式求值 | 239. 滑动窗口最大值 | 347.前 K 个高频元素]]></title><link>https://blog.youkuaiyun.com/m0_64698089/article/details/156366925</link><guid>https://blog.youkuaiyun.com/m0_64698089/article/details/156366925</guid><author>m0_64698089</author><pubDate>Sun, 28 Dec 2025 21:49:31 +0800</pubDate><description><![CDATA[本文摘要： 本文介绍了三种栈和队列的进阶算法应用。
1. 逆波兰表达式求值：利用栈的后进先出特性计算后缀表达式，注意操作数弹出顺序；
2. 滑动窗口最大值：使用单调队列维护窗口内最大值索引，优化时间复杂度至O(n)；
3. 前K个高频元素：结合哈希表统计频率和小顶堆筛选，实现O(nlogk)的时间复杂度。每种算法都详细讲解了核心思路、解题步骤和实现要点，并提供了标准Java代码实现。文章重点强调了各算法的关键细节和优化原理，如单调队列的维护方式和小顶堆的选择原因。]]></description><category></category></item><item><title><![CDATA[栈和队列入门 | 232.用栈实现队列 | 225. 用队列实现栈 | 20. 有效的括号 | 1047. 删除字符串中的所有相邻重复项]]></title><link>https://blog.youkuaiyun.com/m0_64698089/article/details/156310660</link><guid>https://blog.youkuaiyun.com/m0_64698089/article/details/156310660</guid><author>m0_64698089</author><pubDate>Fri, 26 Dec 2025 19:07:42 +0800</pubDate><description><![CDATA[本文系统讲解了栈和队列两种基础数据结构及其应用。栈遵循后进先出原则，核心操作包括push、pop、peek等，典型应用于函数调用、括号匹配等场景；队列遵循先进先出原则，核心操作包括enqueue、dequeue等，常用于任务调度、BFS算法等。通过LeetCode经典题目（232、225、20、1047题）展示了二者相互实现的方法及典型应用场景，包括双栈模拟队列、队列调整顺序模拟栈、栈实现括号匹配和相邻重复项删除等。所有解法均给出完整代码和复杂度分析，具有实际应用价值。]]></description><category></category></item></channel></rss>