计算机理论
95. Unique Binary Search Trees II
基于给定数字N生成所有可能的二叉搜索树序列,采用递归分治算法实现。通过将每个数值作为根节点,递归构建左右子树结构,有效解决BST组合生成问题。算法时间复杂度优化,支持动态规划思想,适用于LeetCode第95题等树结构编程挑战。
2026年2月5日
96. Unique Binary Search Trees
计算n个节点能构成的不同二叉搜索树数量,本质是卡特兰数问题。通过动态规划方法,以每个数字为根节点,左右子树种数相乘求解。递推公式G(n)=∑F(i,n),其中F(i,n)=G(i-1)*G(n-i)。该算法广泛应用于括号匹配、出栈序列、乘法顺序等组合数学场景。
2026年2月5日
970. Powerful Integers 平方数
Powerful Integers问题求解小于等于边界值的强整数集合,强整数定义为x^i + y^j形式。提供两种解法:预计算哈希表查找和暴力枚举优化。关键优化包括使用unordered_set实现O(1)插入、针对x或y为1的特殊情况提前终止循环,以及选择合适枚举对象减少解空间复杂度。
2026年2月5日
971. Flip Binary Tree To Match Preorder Traversal
二叉树翻转匹配前序遍历算法,通过深度优先搜索实现最少节点翻转操作。当节点值与目标序列不匹配时,判断是否可通过交换左右子树来达到匹配效果。核心思路是在DFS过程中动态比较节点值与遍历序列,若左子树无法匹配则考虑翻转当前节点,并将翻转节点值记录到结果列表中。
2026年2月5日
98. Validate Binary Search Tree 验证二叉搜索树
验证二叉搜索树算法通过中序遍历实现,时间复杂度O(logN)平均情况下,空间复杂度O(logN)。采用递归方式检查每个节点是否满足BST性质,利用前驱节点指针验证当前节点值大于前驱节点值的约束条件,确保整棵树符合二叉搜索树定义。
2026年2月5日
997. Find the Town Judge
解决寻找小镇法官问题,分析有向图中被所有其他节点连接且不指向任何节点的特殊节点。提供三种解法:暴力构建图、连接计数优化和邻接矩阵方法,时间复杂度从O(N²)降至O(N),空间复杂度优化至O(N)。重点讲解有向图与无向图的区别,以及如何通过入度出度统计高效解决问题。
2026年2月5日
Construct Binary Tree 系列
基于二叉树遍历序列重构原始树结构的算法解析。通过前序、中序、后序三种遍历方式的组合,运用分治递归思想实现树的重建。核心思路是利用根节点位置分割左右子树序列,支持前序+中序、中序+后序、前序+后序三种构造模式,提供完整的C++代码实现方案。
2026年2月5日
Populating Next Right Pointers in Each Node 系列
填充每个节点的下一个右侧节点指针系列算法详解。涵盖完美满二叉树和任意形状二叉树两种题型,通过next指针连接同层节点,实现常数级空间复杂度的层序遍历。提供完整的C++代码实现和边界条件处理方案。
2026年2月5日
Power of 系列
判断数字是否为特定基数N次方的算法优化方法,涵盖位运算技巧与数学对数换底公式应用。通过while循环整除法可判断幂次关系,利用logb(n)=loge(n)/loge(b)换底公式实现无循环直接判定。fmod函数验证浮点数取模特性,提供高效数学解决方案。
2026年2月5日
