📜 最小生成树算法

最小生成树算法包括Kruskal和Prim算法,前者依赖于并查集以避免环,后者利用优先级队列和切分定理动态选择边。两者的时间复杂度均为O(ElogE),适用于无向加权图的最小生成树问题。

📜 二分图判定算法

二分图的判定算法通过图的遍历和节点着色来判断图是否为二分图,使用DFS或BFS算法实现。该算法在存储电影与演员关系等场景中具有实用价值,并可应用于解决相关的算法题。

📜 环检测及拓扑排序算法

介绍有向图的环检测和拓扑排序算法,包括DFS和BFS实现方法,讨论课程依赖关系和学习顺序,提供示例和代码实现,最后介绍了经典的名流问题。

📜 归并/快速排序详解及应用

归并排序和快速排序的详细解析,包括算法框架、时间复杂度、实现代码及其在实际问题中的应用,如计算右侧小于当前元素的个数和寻找第K个最大元素等。

📜 二叉搜索树心法(合集)

本文介绍了二叉搜索树(BST)的特性及其在算法中的应用,包括中序遍历的有序性、常见算法题的解决方案,以及BST的基本操作如插入、删除、验证合法性以及构造。还探讨了如何利用后序遍历提高算法效率。

📜 二叉树系列算法核心纲领

二叉树解题思维分为遍历和分解问题两类,强调在前中后序位置注入代码逻辑。二叉树的重要性体现在其与经典排序算法的关系,广泛应用于动态规划、回溯算法等。理解前中后序遍历的魅力及后序位置的特殊性是关键。

📜 单调队列解决滑动窗口问题

单调队列是一种特殊的数据结构,用于解决滑动窗口问题,能够在维护先进先出顺序的同时,快速获取窗口内的最大值。通过使用单调队列,可以在O(N)的时间复杂度内高效处理窗口元素的添加和移除。

📜 单调栈算法模版

这是一篇关于单调栈算法的教程,介绍了如何使用单调栈解决"下一个更大元素"类问题,包括基本模板和处理循环数组的技巧。

📜 队列和栈的互相实现

这篇文章探讨了如何利用栈和队列的特性相互实现对方的功能。首先,介绍了用两个栈实现队列的方法,通过将元素压入第一个栈(s1),并在需要时转移到第二个栈(s2)以实现先进先出的特性。并分析了时间复杂度,指出均摊时间复杂度为 O(1)。接着,讨论了用两个队列实现栈的方式,pop操作的时间复杂度为 O(N),而其他操作为 O(1)。

📜 其他算法杂谈

这篇文章探讨了带权重的随机选择算法,特别是如何通过前缀和数组和二分搜索来实现不同权重元素的随机抽取。接着引入了田忌赛马的故事,类比于如何在两个数组中最大化优势,提出了通过排序和双指针策略来优化选择的思路。

📜 二分搜索算法核心代码模版

这篇文章详细讲解了二分查找的核心思想和常见应用,包括查找某个数、查找左侧边界和右侧边界。文章分析了二分查找的关键细节,如 mid 计算、循环条件和边界处理,并通过题目示例帮助理解不同变体的实现方式。还特别指出了常见的错误和陷阱。

📜 滑动窗口算法核心代码模板

滑动窗口算法用于解决子数组问题,通过维护一个动态窗口来优化搜索过程,时间复杂度为O(N)。该算法适用于寻找符合特定条件的子串,如最小覆盖子串和无重复字符的最长子串等。代码示例展示了如何实现这一算法。