计算机理论

437. Path Sum III

解决二叉树路径求和问题,通过双重递归实现从任意节点开始的路径统计。算法采用DFS深度优先搜索,外层递归遍历每个节点作为起点,内层递归从当前起点向下查找满足目标和的路径。时间复杂度O(n²),空间复杂度O(h)。该方法无需从根到叶的完整路径,支持任意起始位置的路径计算,适用于树形数据结构的路径和统计场景。

2026年2月5日

50. Pow(x, n) 实现pow乘方函数

实现pow(x, n)乘方函数的高效算法,采用快速幂思想优化时间复杂度至O(logn)。通过位运算和迭代方式处理正负指数情况,奇数次幂单独累乘,偶数次幂平方递减。代码简洁高效,适用于大数值计算场景,是数学类算法面试的经典题目。

2026年2月5日

503. Next Greater Element II

解决循环数组中下一个更大元素问题,提供两种方案。暴力解法通过双重循环实现O(N²)时间复杂度;最优解采用单调栈算法,时间复杂度降至O(N),空间复杂度O(N)。利用环形特性将数组拆分处理,通过bitset优化空间使用,实现高效查找循环数组中每个元素的下一个更大值。

2026年2月5日

60. Permutation Sequence 第 K 个字典序排列

LeetCode第60题求解第K个字典序排列问题。提供两种解法:暴力枚举法通过next_permutation函数执行K-1次操作,时间复杂度O(n!);数学优化法利用阶乘规律直接定位每位数字位置,时间复杂度O(n)。核心思路是K除以(n-1)!得到当前位选择下标,余数用于后续递归计算,显著提升效率。

2026年2月5日

647. Palindromic Substrings 回文子字符串

解决回文子字符串计数问题提供两种高效算法。动态规划方法使用二维数组dp[i][j]存储子串状态,通过判断字符相等性和内层回文性递推求解。中心扩散法以每个字符或相邻字符为中心向两侧扩展,统计所有回文子串。两种方案时间复杂度分别为O(n²),空间复杂度优化至O(1),适用于字符串处理和算法优化场景。

2026年2月5日

687. Longest Univalue Path

解决二叉树最长同值路径问题,通过深度优先搜索实现。核心思路是从每个节点出发,计算左右子树中值相同的最大边数。采用自底向上递归方法,避免重复遍历。关键在于区分父子路径和子子路径的计算方式,通过维护全局最大值来找到最优解。时间复杂度O(n),空间复杂度O(h)。

2026年2月5日

712. Minimum ASCII Delete Sum for Two Strings 串相等的最小删除代价

动态规划解决字符串最小删除ASCII和问题,通过二维数组dp[i][j]记录两字符串前缀的最优解。当字符相等时直接转移状态,不相等时选择删除代价较小的操作。时间复杂度O(mn),空间复杂度O(mn),适用于字符串编辑距离相关算法优化。

2026年2月5日

75. Sort Colors 荷兰国旗问题

解决荷兰国旗问题的经典算法,采用三指针技术对包含0、1、2三种元素的数组进行原地排序。通过维护begin、cur、end三个指针,分别指向已排序的0区域末尾、当前处理位置和已排序的2区域起始位置,实现一次遍历完成排序,时间复杂度O(n),空间复杂度O(1)。

2026年2月5日

877. Stone Game 石子游戏

石子游戏动态规划解法分析。通过定义二维数组dp[i][j]表示区间i到j内先手与后手能获得的最大石子数,建立状态转移方程实现最优策略计算。提供完整C++代码实现,包含状态压缩优化版本,时间复杂度O(n²),空间复杂度O(n²)优化至O(n)。

2026年2月5日

89. Gray Code 格雷码

格雷码是一种二进制编码系统,相邻数值间仅有一位二进制位不同。通过公式(n>>1) ^ n可直接计算第n个格雷码值。C++实现采用循环遍历方式,时间复杂度O(2^n),空间复杂度O(1)。该算法利用位运算特性高效生成完整格雷码序列,广泛应用于数字通信、错误检测等领域。

2026年2月5日