软件工程

451. Sort Characters By Frequency 按出现频率排序字符

基于LeetCode 451题解,介绍按字符频率排序的算法实现。采用桶排序思想,通过哈希表统计字符频次,以频率为索引构建桶结构,实现O(n)时间复杂度的高效排序。同时提供原地排序方案,结合stringstream优化字符串拼接性能,适用于字符频率统计与重排序场景。

2026年2月5日

567. Permutation in String 字符串中的组合

解决字符串排列问题,通过滑动窗口和哈希签名技术判断s2中是否存在s1的排列组合子串。提供两种解法:基础定长数组滑动方法时间复杂度O(n),优化双指针滑动窗口仅需8ms。核心技术包括字符计数哈希、窗口维护和双指针同步移动策略。

2026年2月5日

636. Exclusive Time of Functions

基于函数调用栈的时间计算算法,通过栈数据结构模拟函数执行过程。解析日志字符串提取函数ID、状态和时间戳,利用栈的后进先出特性处理函数嵌套调用。关键在于正确计算独占执行时间,当函数结束时更新其执行时间并从父函数时间中扣除,确保时间统计准确性。

2026年2月5日

859. Buddy Strings

Buddy Strings算法问题解析,探讨两个字符串通过交换一个字符对能否相等的判断方法。提供两种解决方案:基于字符频次统计的哈希签名法和利用unordered_set去重优化的简洁实现。涵盖时间复杂度O(n)的空间优化策略,包含边界条件处理和重复字符检测的核心算法逻辑。

2026年2月5日

952. Largest Component Size by Common Factor

解决最大公约数连通分量问题,使用并查集算法处理数组元素间的公因子关系。通过质因数分解建立节点连接,将具有公共因子的数字归类到同一连通分量中。算法时间复杂度优化至O(n√max),空间复杂度O(max+n),适用于大规模数据处理的图论连通性分析场景。

2026年2月5日

977. Squares of a Sorted Array

解决有序数组平方问题,采用二分查找定位零点后进行双指针归并。时间复杂度O(n),空间复杂度O(n)。该方法通过lower_bound找到非负数起始位置,利用双指针从中心向两端扩展,比较绝对值大小决定取舍顺序,最终生成递增平方数组。适用于LeetCode 977题目优化求解。

2026年2月5日

983. Minimum Cost For Tickets 买票的最小花费

LeetCode 983题解分析,讲解买票最小花费问题的动态规划解决方案。通过1日、7日、30日三种票型的最优选择策略,构建递推关系式实现最小成本计算。采用map存储状态转移方程,避免连续数组的空间浪费,结合STL函数优化代码实现。该算法有效解决旅行计划中最优购票策略的时间复杂度问题。

2026年2月5日

985. Sum of Even Numbers After Queries

LeetCode 985题解:偶数求和查询问题的高效解决方案。采用O(N)时间复杂度和O(1)空间复杂度的算法,通过预计算初始偶数和并动态维护更新,避免重复遍历。关键优化点包括位运算判断奇偶性、负数取模处理技巧,以及查询过程中根据数值变化智能调整偶数和。适用于频繁数值更新后的偶数统计场景。

2026年2月5日

989. Add to Array-Form of Integer

数组形式整数加法算法实现,将非负整数X的数组形式与整数K相加。通过优化处理小数组直接转换和大数组逐位进位两种情况,实现时间复杂度O(N)、空间复杂度O(1)的高效解决方案。算法采用原地修改策略,包含数组反转技巧和进位处理机制,适用于LeetCode第989题的最优解法。

2026年2月5日

Best Time to Buy and Sell Stock 买卖股票最佳时间系列

股票买卖最佳时机算法详解,涵盖动态规划和贪心策略。包含五道经典题目:单次交易最大收益、无限交易次数、最多两次交易和K次交易的最优解法。通过状态转移方程和代码实现,深入解析持股与卖出状态转换,助你掌握股票交易算法核心思想。

2026年2月5日