计算机理论
110. Balanced Binary Tree
平衡二叉树判断算法详解,通过检查每个节点左右子树高度差是否不超过1来验证树的平衡性。提供两种实现方案:基础方法结合深度计算,时间复杂度O(N);优化版本采用后序遍历一次完成,避免重复计算。深入理解二叉树平衡概念及其高效判定策略,掌握递归与回溯算法设计技巧。
2026年2月5日
112. Path Sum
二叉树路径求和问题解析,判断是否存在从根节点到叶节点的路径使得节点值之和等于目标值。提供两种递归解法:第一种采用累加方式传递当前路径和;第二种运用减法思维递减目标值。重点在于正确识别叶节点条件,确保路径终点无子节点。算法基于深度优先搜索实现。
2026年2月5日
12. Integer to Roman 数字转罗马串
将整数转换为罗马数字的经典算法实现。提供两种解决方案:逐位处理法通过分析个位、十位、百位的数字特征构建对应罗马符号,最后逆序输出;枚举优化法利用题目范围限制预先存储所有可能组合,直接查表拼接结果。第二种方法通过空间换时间策略显著提升性能,适用于固定范围内的数字转换场景。
2026年2月5日
131. Palindrome Partitioning 回文子串分割
回文子串分割问题采用DFS深度优先搜索结合回溯算法实现。通过递归遍历字符串,从起始位置寻找回文子串,找到后继续推进搜索剩余部分。关键在于使用回溯法记录已找到的子串组合,当递归返回时弹出当前子串,确保不同路径的搜索互不干扰。算法时间复杂度为O(2^n),空间复杂度为O(n)。
2026年2月5日
1409. Queries on a Permutation With Key
解决带键值查询的排列问题,涉及数组元素位置查找和头部移动操作。针对M不超过1000的限制,提供两种解决方案:暴力解法通过直接遍历和元素移动处理查询;前缀和优化方案使用Fenwick树加速,将位置查询转化为前缀和计算,显著提升查询效率。适用于动态数组操作和高效范围查询场景。
2026年2月5日
15. 3Sum
3Sum算法通过双指针技术解决三数之和问题。先对数组排序,固定第一个元素后使用双指针查找剩余两数,当三数和为零时记录结果并移动指针去重。关键在于排序后的去重处理,避免重复三元组。该方法时间复杂度O(n²),空间复杂度O(1),可扩展至4Sum等更高维度问题。
2026年2月5日
152. Maximum Product Subarray
最大子数组乘积问题需要处理正负数相乘的复杂情况。当遇到负数时,最小值可能变为最大值,因此需同时维护当前位置的最小值和最大值。通过动态规划思想,在每个位置更新最大最小乘积,并交换两者位置以应对负数翻转效应,最终获得全局最大乘积结果。
2026年2月5日
162. Find Peak Element
Find Peak Element算法解析,探讨寻找数组中峰顶元素的高效解决方案。提供O(N)线性遍历和O(logN)二分查找两种实现方法,详细分析峰顶元素与相邻元素的关系规律。通过图形化理解算法原理,掌握数组峰值检测的核心技巧和时间复杂度优化策略。
2026年2月5日
172. Factorial Trailing Zeroes
计算阶乘结果末尾零的个数是经典数学算法问题。由于因子2的个数总是多于因子5,末尾零的个数由因子5决定。通过递归除以5并累加商值,可高效计算n阶乘中包含的5的个数。该算法时间复杂度O(log₅n),空间复杂度O(log₅n),适用于大数值阶乘零统计。
2026年2月5日
190. Reverse Bits 逆置位序列
Reverse Bits算法通过多次分组逆置实现32位整数的位序列翻转。采用位运算技巧,先交换前后16位,再逐层细分至单个位的交换。核心思想是利用掩码和移位操作高效完成位反转,时间复杂度O(1),空间复杂度O(1),适用于数字信号处理和位操作优化场景。
2026年2月5日