自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 收藏
  • 关注

原创 刷题笔记:力扣第459题-重复的子字符串

本文介绍了两种判断字符串是否由重复子串构成的算法。暴力解法通过枚举所有可能的子串长度(最多到字符串长度一半),检查是否能通过重复拼接构成原字符串,时间复杂度O(n²),空间复杂度O(1)。更优的KMP算法通过将原字符串拼接后掐头去尾,在其中查找原字符串来判断是否存在重复子串,时间复杂度O(n),空间复杂度O(n)。KMP算法虽然效率更高,但实现较为复杂,涉及构建next数组和模式匹配过程。

2026-07-30 08:22:16 109

原创 刷题笔记:卡码网第55题-右旋字符串

本文介绍了两种字符串右旋转k位的实现方法。第一种方法通过开辟额外空间,先复制后k个字符再复制剩余字符,时间复杂度O(n),空间复杂度O(n)。第二种方法通过三次原地反转实现:先整体反转字符串,再分别反转前k个字符和剩余字符,时间复杂度O(n),空间复杂度O(1)。文章还提醒注意ACM模式下的输入顺序问题,并建议参考LeetCode 151题的反转字符串思想。两种方法完整代码均给出,第一种直观但需额外空间,第二种高效但需要更复杂的反转操作。

2026-07-30 08:22:02 293

原创 刷题笔记:力扣第151题-反转字符串中的单词

本文介绍了两种反转字符串中单词顺序的算法。第一种方法使用额外空间,通过双指针从后向前遍历原字符串,依次提取单词存入新字符串。第二种方法则是原地修改,先去除多余空格再整体反转字符串,最后逐个反转单词内部字符。两种方法的时间复杂度均为O(n),但第二种方法空间复杂度优化为O(1)。文章详细说明了两种实现的关键步骤,包括指针移动、边界判断和字符交换等细节处理,并比较了它们的优缺点。

2026-07-30 08:21:19 158

原创 刷题笔记:卡码网第54题-替换数字

本文介绍了首次接触ACM模式编程题的经验,主要包含三点内容:1) 需要处理完整输入输出,后续将结合力扣与ACM模式练习;2) 展示了一个字符串转换的C语言实现,将非小写字母替换为"number",时空复杂度为O(n);3) 强调三个注意事项:结果数组大小要足够(至少60001)、ACM模式与力扣的内存管理差异(main函数内可用栈空间)、字符指针必须分配内存避免野指针。代码演示了完整的读取、转换和输出过程。

2026-07-30 08:20:52 134

原创 刷题笔记:力扣第344、541题(字符串)

本文介绍了力扣两道字符串反转问题的解法。第344题要求原地反转字符串,通过双指针交换对称位置的字符实现,时间复杂度O(n),空间复杂度O(1)。第541题在每2k个字符中反转前k个字符,处理时分为完整2k组和剩余部分两种情况,同样使用交换方法,保持O(n)时间复杂度和O(1)空间复杂度。两题核心都是通过swap函数实现字符交换,主要区别在于处理字符串的规则不同。

2026-07-30 08:20:13 133

原创 刷题笔记:力扣第454、383题(哈希表)

本文介绍了力扣两道哈希表相关题目的解法:1. 第454题四数相加Ⅱ采用分治策略,先用哈希表统计前两个数组元素和及其频率,再在后两个数组的和中寻找互补值。时间复杂度O(n²),空间复杂度O(n²)。2. 第383题赎金信使用长度为26的数组统计杂志字母频次,再验证赎金信字母是否全部包含。时间复杂度O(m+n),空间复杂度O(1)。两题均通过哈希技术高效解决问题,体现了不同场景下哈希表的灵活应用。

2026-07-29 10:17:00 171

原创 刷题笔记:力扣第202题-快乐数

本文介绍了判断快乐数的两种算法。第一种使用哈希表记录出现过的平方和,若重复则判定为循环(非快乐数),时间复杂度O(logn)。第二种采用快慢指针法(弗洛伊德判圈算法),快指针计算两次平方和,慢指针计算一次,若相遇则存在循环,时间复杂度O(logn)且空间优化为O(1)。两种方法都基于"非快乐数必然进入循环"的特性,代码实现展示了平方和计算与循环检测的核心逻辑。

2026-07-29 10:15:18 198

原创 刷题笔记:力扣第242、349题(哈希表)

本文总结了LeetCode两道哈希表相关题目的解法。第242题"有效的字母异位词"通过创建26字母计数数组,先加后减判断是否完全抵消。时间复杂度O(n),空间O(1)。第349题"两个数组的交集"有两种解法:一种是双哈希数组标记后比较;另一种优化为单哈希数组+动态分配结果空间,都实现了O(m+n)时间复杂度和常数空间复杂度。两题均展示了哈希表在字符串处理和数组比较中的高效应用。

2026-07-29 10:13:51 204

原创 刷题笔记:力扣第142题-环形链表Ⅱ

本文探讨了检测链表环入口的两种方法。哈希表法通过存储遍历节点,第一个重复节点即为环入口,时空复杂度均为O(n)。更优的双指针法使用快慢指针:快指针走2步/次,慢指针走1步/次,相遇后重置一个指针从头出发,两者再次相遇点即为环入口。双指针法时间复杂度O(n)且空间复杂度O(1),是更优解。文章详细分析了双指针的数学原理,并提供了两种方法的完整代码实现。

2026-07-29 08:28:40 265

原创 刷题笔记:力扣第160题-相交链表

本文介绍了两种查找两个链表相交节点的算法。第一种是双指针法,通过计算链表长度差,使长链表指针先移动差值步,然后两指针同步移动比较节点地址,时间复杂度O(m+n)。第二种是力扣官方提供的巧妙解法,两指针分别遍历两个链表后交换遍历,最终会在相交节点或NULL处相遇,代码更简洁但原理与第一种方法相同。两种方法的时间复杂度均为线性,空间复杂度为常数级,均满足题目要求。

2026-07-29 08:28:24 211

原创 刷题笔记:力扣第19题-删除链表的倒数第N个结点

本文介绍了删除链表倒数第n个节点的两种解法。基础解法采用两趟扫描:第一趟统计链表节点数,第二趟定位并删除目标节点。优化解法使用快慢指针单趟扫描:快指针先走n步,然后与慢指针同步移动,当快指针到达末尾时,慢指针正好指向目标节点的前驱,实现高效删除。两种方法都采用了虚拟头节点来统一处理边界情况,其中快慢指针法更具效率优势,时间复杂度为O(n)。

2026-07-28 17:40:11 198

原创 刷题笔记:力扣第206题-反转链表

本文介绍了两种反转单链表的实现方法:迭代法和递归法。迭代法通过循环依次改变节点指向,使用pre记录前驱节点,tmp暂存后继节点防止断链,最终返回pre作为新链表头。递归法则将相同逻辑改写为递归形式,终止条件是当前节点为空,返回pre作为反转后的头节点。两种方法时间复杂度均为O(n),空间复杂度迭代法为O(1),递归法为O(n)(栈空间)。文章还指出代码可以简化,如移除特殊判空条件和优化返回值处理。两种方法本质相同,只是实现方式的差异。

2026-07-28 17:38:59 199

原创 刷题笔记:力扣第707题-设计链表

本文实现了一个完整的链表数据结构,包含创建、查询、插入(头部、尾部和指定位置)、删除以及释放操作。代码采用虚拟头节点简化边界处理,重点解决了指针越界和内存管理等细节问题。关键技巧包括:使用虚拟头节点统一操作逻辑;插入/删除时指针定位到目标位置前驱节点;遍历时及时处理空指针异常;释放内存时按顺序操作避免断链。通过这些实践,展示了链表操作中的核心思想和常见错误防范方法。

2026-07-28 17:37:44 915

原创 刷题笔记:力扣第203题-移除链表元素

文章介绍了一种通过引入虚拟头节点来删除链表中特定值节点的C语言实现方法。代码通过创建虚拟头节点统一处理头节点删除情况,使用遍历指针和临时指针批量删除连续匹配节点,并及时释放内存。文中指出了三个常见错误:结构体定义遗漏struct前缀、指针连接错误以及遍历起始点错误,并给出了修正后的完整代码。修正后的版本优化了内存管理,在删除节点时主动释放内存避免泄漏,同时正确处理了链表头节点可能被删除的边界情况。

2026-07-28 17:36:07 179

原创 刷题笔记:力扣第704、977、209题(数组相关)

本文总结了力扣三道算法题的解题思路与代码实现: 704题二分查找:标准二分实现,时间复杂度O(logn),通过调整左右指针逐步缩小搜索范围。 977题有序数组平方: 方法1:找到正负分界点后双指针归并,时间复杂度O(n) 方法2(优化):直接从数组两端比较平方值逆序填充结果数组 209题最小长度子数组: 采用滑动窗口技术,右指针持续扩展,左指针条件收缩 关键点:窗口和≥target时立即记录长度并尝试缩小窗口 时间复杂度O(n) 三题均通过指针操作降低时间复杂度,体现了双指针和滑动窗口在数组处理中的高效性。

2026-07-28 15:18:37 247

原创 基于OpenHarmony 5.0的CAN驱动移植步骤

本文分享了基于OpenHarmony5.0和全志T527开发板的CAN驱动移植经验。主要内容包括:1)在内核层通过修改设备树和配置文件使能CAN驱动;2)交叉编译canutils和iproute工具时遇到的常见问题及解决方案;3)CAN功能测试方法,包括回环测试和双通道互发测试。文章提供了详细的配置代码和操作指令,特别强调了32位编译环境和静态编译的重要性。该方案虽然针对T527芯片实现,但移植思路适用于其他平台,为OpenHarmony生态的CAN驱动开发提供了实用参考。

2026-06-07 16:10:03 303

原创 动态规划专练:力扣第416、1049题

本文探讨了力扣第416题(分割等和子集)和第1049题(最后一块石头的重量Ⅱ)的解法。对于416题,首先分析了回溯算法(时间复杂度O(2^n))及其剪枝优化,然后详细介绍了动态规划解法(时间复杂度O(n×target)),将其转化为0-1背包问题。对于1049题,同样采用背包问题的思路,通过寻找最接近sum/2的子集和来最小化剩余石头重量。文章还对比了不同解法的性能,包括回溯+记忆化+剪枝的优化版本。最后给出了完整的代码实现和复杂度分析,展示了动态规划在解决这类问题上的优势。

2026-03-27 09:59:25 658

原创 动态规划专练:力扣第96题-不同的二叉搜索树

本文讨论了计算由n个节点组成的二叉搜索树种类数的动态规划解法。关键点在于利用二叉搜索树的中序遍历特性(严格递增序列)和递归结构:根节点为i时,左子树有i-1个节点,右子树有n-i-1个节点。通过动态规划四步法:定义dp[i]为i个节点的种类数,递推公式为所有根节点情况的左右子树种类乘积之和,初始化dp[0]=dp[1]=1,采用双重循环计算。最终给出O(n^2)时间复杂度和O(n)空间复杂度的实现代码。

2026-03-27 09:59:12 188

原创 动态规划专练:力扣第343题-整数拆分

本文探讨了整数拆分的动态规划解法。首先提出基本思路:对于数字n,拆分为a和b后,最大乘积可能是a*b或继续拆分后的乘积。通过递推公式dp[n]=fmax(a,dp[a])*fmax(b,dp[b])实现。初始尝试对半拆分法,但测试发现并非最优解。改进方法采用从中间向两边扩展搜索,时间复杂度接近O(n^2)。最后介绍了力扣官方优化方案,基于数学规律:优先拆分成3和2的组合,时间复杂度降为O(n)。两种方法的空间复杂度均为O(n),后者利用数学性质显著提升了效率。

2026-03-26 10:32:32 143

原创 动态规划专练:力扣第509、70、746题

本文记录了动态规划专项训练的学习过程,重点分析力扣509、70、746三道经典DP题目。作者按照动态规划五部曲(确定dp含义、递推公式、初始化、遍历顺序)解题,详细记录了每道题的解题思路和代码实现。从斐波那契数列的入门解法到爬楼梯问题的最优空间优化,再到最小花费爬楼梯问题的两种不同思路,展现了逐步深入理解DP的过程。特别强调了变长数组初始化的注意事项,并比较了递归和迭代解法的差异。通过这三道基础DP题的系统训练,作者初步掌握了动态规划的基本解题框架。

2026-03-26 10:32:17 913

原创 刷题笔记:力扣第91、93题(全排列)

本文分析了力扣第91题(解码方法)和第93题(复原IP地址)的解题思路。第91题采用递归解法会超时,最优解是动态规划,通过判断字符是否为0和组合数字是否合法来计算解码方法数,时间复杂度O(n)。第93题使用DFS回溯法,通过判断IP段的合法性和处理前导零来生成所有可能的IP地址组合,时间复杂度O(1)。文章指出,需要输出具体组合时用DFS,只需统计组合数时用DP。两题都体现了对特殊情况的处理技巧,如首位为0、连续0等边界条件的判断。

2026-03-25 10:01:43 419

原创 刷题笔记:力扣第71题-简化路径

本文探讨了路径简化问题的两种解法。初始思路是直接遍历字符串处理不同情况,但存在无法处理连续"/../"等问题。正确解法应采用栈结构:1)使用strtok按"/";分割路径;2)遇到"."忽略,".."则出栈,其他目录名入栈;3)最后拼接栈中元素。优化建议包括:用malloc代替calloc,指针操作替代strcat提升效率。还提供了纯字符操作的优化实现,通过统计连续点和斜杠进行特殊处理,本质上仍是栈思想的应用。两种方法时间复杂度均

2026-03-24 10:47:25 636

原创 刷题笔记:力扣第58题-最后一个单词的长度

本文介绍了两种计算字符串最后一个单词长度的算法。第一种正向遍历方法:先跳过末尾空格,然后从头遍历到处理后的末尾位置,遇到空格重置计数器,遇到字母则累加。时间复杂度O(n)。第二种反向遍历方法:直接从末尾跳过空格后向前统计字母数量直到遇到空格或开头,效率更高。两种方法空间复杂度均为O(1)。反向遍历算法是更优解,实际运行时间通常小于正向遍历。两种方法都正确处理了末尾空格的情况,保证了结果的准确性。

2026-03-24 10:46:21 177

原创 刷题笔记:力扣第43、67题(字符串计算)

本文解析了两道力扣字符串运算题。第43题"字符串相乘"采用竖式乘法思想,通过双重循环逐位相乘并处理进位,避免了大数溢出问题,时间复杂度O(len1×len2)。第67题"二进制求和"借鉴链表加法思路,从末位开始逐位相加处理进位,优化版本使用三目运算合并分支,最后翻转结果字符串。两题均需特殊处理"0"输入情况,时间复杂度均为线性,是字符串运算的标准解法。

2026-03-23 09:35:50 537

原创 刷题笔记:力扣第38题-外观数列

本文介绍了一种使用迭代方法解决"计数和说"问题的C语言实现。算法通过for循环进行n-1轮迭代,每轮对当前字符串进行行程长度编码(RLE),将重复字符的次数和值写入新字符串。关键点包括:1)使用两个指针分别遍历和填充;2)预先分配足够内存(5000字节);3)使用strcpy安全复制字符串。时间复杂度为O(N×L),空间复杂度为O(L)。文中还提到可用查表法(预处理30种情况)来优化性能,以空间换时间。注意事项包括正确计数方法、内存管理和字符串操作的选择。

2026-03-23 09:35:37 174

原创 刷题笔记:力扣第28题-找出字符串中第一个匹配项的下标

本文介绍了字符串匹配问题的两种解法。首先介绍了暴力匹配法,通过双重循环逐个比较字符,时间复杂度为O(N×M),包含边界条件处理和剪枝优化。然后重点讲解了KMP算法,利用预先计算的pi数组(最长相同前后缀长度)来优化匹配过程,主串指针不回退,仅调整模式串位置,将时间复杂度降至O(N+M)。文章详细说明了pi数组的构建过程和使用方法,强调KMP算法的精妙之处在于利用已匹配信息减少不必要的比较。建议通过视频讲解深入理解KMP原理,并通过练习掌握该算法。

2026-03-22 10:51:39 206

原创 刷题笔记:力扣第20、22题(括号问题)

本文详细分析了两道力扣括号相关题目的解法优化过程。第20题使用栈结构判断括号有效性,通过数组模拟栈操作,时间复杂度O(n)。第22题采用回溯法生成有效括号组合,初始版本使用全局变量导致效率较低,经优化后:1) 改用函数参数替代全局变量提升访问速度;2) 利用函数调用栈自动回溯;3) 精确计算内存分配;4) 使用calloc自动补'\0';5) 简化条件判断逻辑。最终版本通过参数传递路径长度等优化手段,实现了算法效率的显著提升。两题均展示了从基础解法到最优解的系统优化思路。

2026-03-22 10:51:24 909

原创 刷题笔记:力扣第17题-电话号码的字母组合

本文介绍了一种使用递归回溯算法解决电话号码字母组合问题的方案。通过定义数字到字母的映射表(vis)和对应字母数量表(visLen),采用深度优先搜索遍历所有可能的字母组合。算法核心包括递归终止条件判断和回溯循环处理,通过维护path数组记录当前组合,最终将所有有效组合存入结果数组。该方案时间复杂度为O(3^m×4^n),空间复杂度为O(len),其中m对应3字母数字个数,n对应4字母数字个数,是此类问题的最优解法。

2026-03-21 10:00:44 184

原创 刷题笔记:力扣第12、13题(罗马数字)

本文介绍了力扣第12题和第13题的解题思路。第12题将整数转换为罗马数字,采用贪心算法,通过预定义的哈希表从大到小匹配数值,时间复杂度O(1)。第13题将罗马数字转换为整数,利用数组模拟哈希表存储字符对应值,通过判断相邻字符大小关系确定加减规则,时间复杂度O(n)。两题均通过合理利用哈希表实现高效转换,其中第12题需注意字符串初始化,第13题需处理特殊减法规则。两种转换方法均达到最优复杂度。

2026-03-21 10:00:32 383

原创 刷题笔记:力扣第8题-字符串转换整数(atoi)

本文探讨了字符串转整数的算法实现,分析了初始方案存在的问题并给出优化方案。初始代码使用从右向左计算导致溢出,且使用了低效的pow运算。优化后采用从左向右的秦九韶算法(res=res*10+当前数字),使用INT_MAX/MIN宏处理边界,时间复杂度O(n)。最终方案通过提前判断(num>INT_MAX/10)来预防溢出,比力扣标准答案更易理解。核心要点包括:跳过前导空格、处理符号位、逐位累加时的溢出预判以及符号应用。两种实现方式都达到了线性时间复杂度和常数空间复杂度。

2026-03-20 11:02:38 195

原创 刷题笔记:力扣第6题-Z字形变换

本文分析了Z字形字符串转换算法的实现过程。首先发现字符串具有周期性,周期长度为2*行数-2。通过逐行扫描,在非首尾行时额外获取斜向字符。初始实现存在两个问题:结果数组使用栈内存导致指针失效,以及行数为1时的处理不当。修正后使用堆内存分配并优化边界条件处理。最终算法时间复杂度为O(n),空间复杂度O(n)。对比最优解发现,提前边界判断、优化计算公式和条件分支拆分可以进一步提升性能。核心思想是利用周期性规律按行填充字符,避免生成完整Z字形结构。

2026-03-20 11:02:25 554

原创 刷题笔记:力扣第3题-无重复字符的最长子串

本文探讨了求解最长无重复字符子串的算法优化过程。初始方案使用双重循环和标记数组,但存在时间复杂度O(n²)和逻辑错误问题。优化后采用滑动窗口算法:右指针持续右移直至重复,左指针每次右移一位并释放对应字符标记。最终方案时间复杂度O(n),空间复杂度O(1),通过预存字符串长度和单次遍历实现高效求解。关键改进包括消除重复计算、保持右指针单向移动、用指针差值直接计算窗口长度。

2026-03-19 10:29:58 293

原创 刷题笔记:力扣第81题-搜索旋转排序数组Ⅱ

本文探讨了旋转排序数组中存在重复元素时的搜索问题。与无重复元素的33题不同,重复元素会导致二分法无法判断哪边有序。解决方案是在二分前先去除连续重复元素:通过移动左右指针跳过重复值。去重后,数组至少存在一个不同元素,可正常判断有序区间进行二分搜索。算法时间复杂度一般为O(logn),最坏情况(全重复元素)为O(n)。文中还提供了简化版去重方法:当左右中三点值全相同时,同时移动左右指针缩小区间。

2026-03-19 10:29:39 135

原创 刷题笔记:力扣第80题-删除有序数组中的重复项Ⅱ

本文介绍了力扣第80题"删除有序数组中的重复项II"的两种解法。第一种采用快慢指针,统计元素出现次数并最多保留2次,时间复杂度O(n),空间复杂度O(1)。第二种优化解法从第3个元素开始遍历,通过比较当前元素与新数组前前一个元素来判断是否保留,简化了逻辑。两种方法都满足题目要求,其中优化后的解法代码更简洁,只需判断nums[i]与nums[curIndex-2]是否相同即可决定保留与否。

2026-03-18 10:26:16 137

原创 刷题笔记:力扣第78、79、90题(子集查找)

本文介绍了力扣三道回溯算法题目的解题思路和优化方法。78题使用递归生成所有子集,时间复杂度O(n×2ⁿ);79题通过DFS在二维矩阵中搜索单词,优化后省去标记数组;90题在78题基础上加入去重逻辑,处理重复元素的子集问题。文章重点分析了递归模板设计、剪枝优化和位运算技巧,比较了不同解法的优缺点,并提供了标准解法和优化后的代码实现。对于回溯问题,建议掌握递归参数设计、终止条件和单层逻辑的通用模板,同时注意空间优化和去重处理。

2026-03-18 10:25:59 870

原创 刷题笔记:力扣第75题-颜色分类

本文探讨了颜色排序问题的两种解法。第一种直接使用qsort函数快速排序,虽然简单但不够高效。第二种采用双指针法:设置左指针标记0的边界,右指针标记2的边界,遍历指针处理当前元素。遇到0时与左指针交换并右移,遇到2时与右指针交换(此时遍历指针不移动),遇到1则跳过。这种方法只需一次遍历即可完成排序,时间复杂度O(n)。关键点在于处理2时需要重新检查交换后的元素,而循环条件必须包含等于以确保最后一个元素被处理。

2026-03-17 09:51:56 164

原创 刷题笔记:力扣第73、74题(二维矩阵)

本文介绍了力扣两道矩阵相关题目的解法。第73题要求原地将矩阵中0元素所在行列置零,解法是使用矩阵首行首列作为标记数组,分步骤处理:先检查首行首列是否有0,再用剩余区域标记需置零的行列,最后处理标记和首行首列。时间复杂度O(mn),空间复杂度O(1)。第74题要求在有序矩阵中搜索目标值,给出两种解法:线性搜索法先确定目标行再线性查找,时间复杂度O(m+n);二分法先二分查找目标行再二分查找目标列,时间复杂度O(logm+logn)。还介绍了一种将矩阵视为一维数组的优雅二分查找方法。两种解法都需注意边界条件处理

2026-03-17 09:51:38 382

原创 动态规划专练:力扣第63、64、62题

本文总结了力扣动态规划系列题目(62-64题)的解题思路。对于不同路径问题(62题),采用一维DP数组优化空间,时间复杂度O(mn),空间复杂度O(n)。不同路径II(63题)增加了障碍物条件,通过动态规划处理障碍物格子,同样使用空间优化解法。最小路径和(64题)则转换为求最小路径值问题,采用类似方法分情况处理边界条件。三题均遵循动态规划四部曲:明确DP含义、推导状态转移方程、初始化边界条件、确定遍历顺序。通过滚动数组技术将空间复杂度从O(mn)降至O(n),体现了动态规划在路径类问题中的高效性和优化技巧。

2026-03-16 10:39:19 293

原创 刷题笔记:力扣第56、57题(数组区间操作)

本文探讨了力扣第56题和第57题的区间合并与插入算法优化。对于第56题,初始采用标记数组法时间复杂度较高(O(n*10^4)),改进后采用先排序再遍历的方法,时间复杂度降至O(nlogn)。进一步优化通过使用栈内存变量tmp代替堆内存访问,以及局部变量resTop减少指针解引用,显著提升运行速度。第57题作为变种,采用类似思路处理插入区间:先跳过左侧不重叠区间,合并重叠区间,最后处理右侧剩余区间,时间复杂度O(n)。文章强调了边界条件处理和数组越界防护的重要性,建议优先使用栈内存操作以提高性能。优化后的算法

2026-03-16 10:39:05 1072

原创 刷题笔记:力扣第54、59题(螺旋矩阵)

本文分析了力扣54题(螺旋矩阵)和59题(螺旋矩阵Ⅱ)的解题思路。核心算法采用"边界收缩+方向切换"策略:通过维护上下左右四个边界,按顺时针方向依次遍历矩阵外围元素,每完成一个方向的遍历就收缩对应边界。时间复杂度均为O(m×n)或O(n²)。54题解法通过行列坐标移动和方向反转实现螺旋遍历;59题则采用类似方法按顺序填充数字。关键点在于正确处理边界条件和循环终止条件,避免遗漏元素或死循环。两题都展示了如何通过控制边界变量来系统地遍历二维矩阵。

2026-03-15 09:28:00 196

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除