08 2024考研408-数据结构 第八章-排序学习笔记
<p>24考研408数据结构第八章学习笔记,讲解排序基本概念与各类排序算法,涵盖插入、希尔、冒泡、快速、选择、堆排序、归并排序及基数排序与稳定性分析。</p>
<p>24考研408数据结构第八章学习笔记,讲解排序基本概念与各类排序算法,涵盖插入、希尔、冒泡、快速、选择、堆排序、归并排序及基数排序与稳定性分析。</p>
<p>本文是代码随想录 LeetCode 刷题系列的文章目录,按数组等专题汇总各道题目的题解链接,方便按知识点检索与系统复习。读者可据此快速定位到对应题解文章,循序渐进地完成算法刷题训练。</p>
<p>介绍Dijkstra最短路径算法的基本思想与贪心选择过程,梳理U、prev、flag三个数组的初始化与更新步骤,并给出Java邻接矩阵实现及路径回溯打印的完整代码。</p>
<p>借助栈讲解中缀表达式转后缀表达式的规则与求值流程,给出Java实现综合计算器的完整代码,并附上LeetCode逆波兰表达式求值的题解与复杂度分析。</p>
<p>讲解哈夫曼树的构造原理与带权路径长度WPL计算,分析按权重分布能够压缩存储的原因,并给出Java实现哈夫曼编码与解码的完整代码及测试过程。</p>
<p>本文讲解用栈实现二叉树的迭代遍历。文章给出节点定义与调试代码,介绍前序遍历先入右后入左的技巧、中序遍历用指针配合栈一路向左再回退的写法,以及后序遍历取中右左序列再反转得到左右中的思路。</p>
<p>本文讲解 LeetCode 232 用栈实现队列,要求仅用两个栈实现先入先出队列的 push、pop、peek、empty 操作。文章给出题目描述与调试代码,介绍进栈栈与出栈栈的分工,并强调仅在出栈栈为空时才把进栈栈元素整体倒入以均摊 O(1)。</p>
<p>本文讲解二叉树的前序、中序、后序递归遍历,对应 LeetCode 144、94、145 三道题。文章给出节点定义与本地调试代码,分别说明三种遍历中访问根节点值的时机,并用递归方式简洁实现,帮助建立二叉树遍历的基础认知。</p>
<p>本文讲解 LeetCode 347 前 K 个高频元素,返回出现频率最高的 k 个元素。文章给出题目描述与调试代码,介绍用哈希表统计频率后配合小顶堆维护前 k 个的解法,以及先排序再遍历入优先队列的第二种实现思路。</p>
<p>本文记录 LeetCode 239 滑动窗口最大值的解法,需返回每个窗口中的最大值。文章给出题目描述与调试代码,重点讲解自定义单调队列:入队时弹出尾部较小元素,队头即最大值,并介绍用 max、pos 记录极值的窗口内比较法。</p>
<p>本文讲解 LeetCode 20 有效的括号,判断只含括号的字符串是否合法闭合。文章给出题目描述与调试代码,介绍遇到左括号就压入对应右括号、遇到右括号再与栈顶匹配的栈解法,并说明栈为空或栈顶不匹配时直接判定失败。</p>
<p>本文记录 LeetCode 455 分发饼干的贪心解法,目标是尽可能满足更多孩子。文章给出题目描述与调试代码,介绍先将孩子胃口与饼干尺寸升序排序,再以孩子为中心用双指针依次匹配,优先满足小胃口孩子从而得到最大满足数。</p>
<p>本文记录 LeetCode 225 用队列实现栈,要求用队列实现后入先出栈的四种操作。文章给出题目描述与调试代码,介绍两个单队列通过插入后倒腾并交换实现栈的解法,以及用一个双端队列每次从队头插入和弹出的简化实现。</p>
<p>本文讲解 LeetCode 150 逆波兰表达式求值,根据后缀表达式计算整数结果。文章给出题目描述与调试代码,介绍遇到数字入栈、遇到运算符弹出两个数运算后再入栈的栈解法,并提醒减法和除法要区分操作数的先后顺序。</p>
<p>本文记录 LeetCode 1047 删除字符串中的所有相邻重复项,反复删除相邻相同字母直到无法继续。文章给出题目描述与调试代码,介绍栈解法、以字符串充当栈的写法,以及在原字符数组上用快慢双指针覆盖的 O(1) 空间解法。</p>