计算机理论

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日

LeetCode 题解

LeetCode 题解

精心整理的 LeetCode 算法题解,包含思路分析、代码实现和复杂度分析

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日