hanlin03
码龄5年
求更新 关注
提问 私信
  • 博客:38,905
    38,905
    总访问量
  • 126
    原创
  • 12
    粉丝
  • 10
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:江苏省
加入CSDN时间: 2021-12-31

个人简介:一个机械专业的研究生,可能会转代码相关方向,在CSDN记录一下自己的刷题学习笔记。

  • 毕业院校: 东南大学
博客简介:

hanlin03的博客

查看详细资料
个人成就
  • 获得1,110次点赞
  • 内容获得0次评论
  • 获得425次收藏
  • 博客总排名17,493名
  • 原力等级
    原力等级
    4
    原力分
    520
    本月获得
    165
创作历程
  • 126篇
    2026年
成就勋章
TA的专栏
  • 力扣hot100
    64篇
  • 力扣刷题笔记
    118篇
  • ACM模式刷题笔记
    7篇
  • 技术分享
    1篇
  • 动态规划专项训练
    20篇

TA关注的专栏 0

TA关注的收藏夹 0

TA关注的社区 0

TA参与的活动 1

创作活动更多

【多重好礼】鸿蒙心迹 · 开发录原创征稿活动

鸿蒙开发者的实战经验,值得被记录。从踩坑排查到项目复盘,从工具脚本到学习笔记,每一段真实的开发经历,都是社区最宝贵的技术资产。「鸿蒙心迹 · 开发录」正式启航,不限主题、随时可写,只要是鸿蒙开发相关的真实经验都欢迎投稿。 本活动为 [HarmonyOS 7.0 创新内容共创季](https://builderx.csdn.net/activity-site/harmonyos/activity2026)双轨征文之一,与[「共创季 · 稿事节」](https://harmonyosdev.csdn.net/6a97f0de2b83d06f0ecadec5.html)深度征文互补——「稿事节」写深度技术长文,「开发录」写日常开发实战笔记。 「开发录」每月一期,12月截止,本季共三期,投稿即有机会获得京东卡、CSDN博客流量券、亿万Token、社区定制周边好礼!

125人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

刷题笔记:力扣第560题-和为k的子数组

本题因数组含负数,滑动窗口法不适用。正确解法为前缀和+哈希表:维护当前前缀和sum,查找是否存在前缀和sum−k,若有则累加其出现次数。关键点:初始化哈希表中前缀和0的次数为1,确保sum==k时结果正确;必须遵循“先查后存”原则,避免k=0时误加。时间复杂度O(n),空间复杂度O(n)。
原创
博文更新于 8 小时前 ·
226 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

刷题笔记:力扣第394题-字符串解码

本题为字符串解码,需处理嵌套的数字与字母组合。采用栈或递归法均可实现:栈法使用两个栈分别存储数字和字符串,遇'['入栈,遇']'出栈并重复拼接;递归法通过指针逐字符解析,遇'['递归处理内层,返回后拼接结果。两种方法时间、空间复杂度均为O(n),关键在于正确维护指针与内存管理,避免泄漏。
原创
博文更新于 2026.09.25 ·
393 阅读 ·
6 点赞 ·
0 评论 ·
4 收藏

刷题笔记:力扣第155题-最小栈

本题要求实现支持O(1)时间复杂度获取最小值的栈。核心思路为:使用辅助栈维护每个状态下的最小值,或通过差值栈(存储元素与当前最小值的差值)实现空间优化。前者空间复杂度O(n),后者可降至O(1)。需注意数据范围为INT_MIN至INT_MAX,差值可能溢出,故使用long long类型避免整数溢出问题。完整实现包括创建、入栈、出栈、取顶、取最小值等操作,均保证O(1)时间复杂度。
原创
博文更新于 2026.09.25 ·
290 阅读 ·
7 点赞 ·
0 评论 ·
5 收藏

刷题笔记:力扣第4题-寻找两个正序数组的中位数

本题通过二分法在较短数组上寻找分割点,将两数组划分为左右两部分,使左半部分元素总数为(m+n+1)/2,并通过边界哨兵处理确保分割合法。当左半最大值 ≤ 右半最小值时,即找到中位数位置:奇数时取左半最大值,偶数时取左右最大与最小的平均值。通过在较短数组上二分,时间复杂度优化至O(log(min(m,n))),空间复杂度O(1),为最优解。
原创
博文更新于 2026.09.24 ·
616 阅读 ·
7 点赞 ·
0 评论 ·
5 收藏

刷题笔记:力扣第136题-只出现一次的数字

本题可通过异或运算巧妙求解:利用异或的性质——任何数与自身异或为0,0与任何数异或为本身,且满足交换律。数组中除一个数外其余均出现两次,遍历数组进行异或,重复元素相互抵消,最终结果即为仅出现一次的数字。代码实现简洁,时间复杂度O(n),空间复杂度O(1)。
原创
博文更新于 2026.09.24 ·
284 阅读 ·
4 点赞 ·
0 评论 ·
2 收藏

刷题笔记:力扣第134题-加油站

本题通过贪心策略求解环形路加油站问题。核心思想:若总油量≥总消耗,则必有解,且若从某点出发途中油量不足,则该路径上所有站点均不可能为起点。只需遍历一次,维护当前油量,一旦油量为负则重置起点并清空油箱。最终若总油量非负,最后记录的起点即为答案。时间复杂度O(n),空间复杂度O(1)。
原创
博文更新于 2026.09.23 ·
190 阅读 ·
7 点赞 ·
0 评论 ·
4 收藏

刷题笔记:力扣第153题-寻找旋转排序数组中的最小值

本题为旋转排序数组找最小值,核心思路是通过二分法判断升序与乱序区间。标准解法以nums[mid] > nums[r]判断最小值在右侧,更新左边界;否则最小值在左侧或mid处,更新右边界。循环结束时l == r即为最小值位置,无需额外变量。时间复杂度O(log n),空间复杂度O(1)。关键点:使用nums[r]而非nums[l]判断,避免边界遗漏,且r = mid而非mid-1确保不跳过最小值。
原创
博文更新于 2026.09.22 ·
264 阅读 ·
4 点赞 ·
0 评论 ·
4 收藏

刷题笔记:力扣第23题-合并K个升序链表

本题要求合并K个有序链表,可采用三种方法:①顺序合并,时间复杂度O(nk²),空间O(1);②迭代分治,借鉴归并排序思想,时间复杂度O(nk log k),空间O(1);③递归分治,时间复杂度O(nk log k),空间复杂度O(log k)。三种方法均基于两两合并逻辑,其中分治法效率更高,尤其适合大规模数据处理。
原创
博文更新于 2026.09.22 ·
708 阅读 ·
3 点赞 ·
0 评论 ·
1 收藏

刷题笔记:力扣第148题-排序链表

本文介绍了链表排序的三种方法:数组排序法(时间O(nlogn),空间O(n))、自顶向下归并排序(时间O(nlogn),空间O(logn))和自底向上迭代归并排序(时间O(nlogn),空间O(1))。后者通过不断翻倍子链表长度,利用哑节点和指针操作实现原地排序,避免递归栈开销,满足空间复杂度O(1)要求。关键点包括使用位运算加速倍增、正确处理边界情况及合理截断链表。
原创
博文更新于 2026.09.22 ·
297 阅读 ·
5 点赞 ·
0 评论 ·
4 收藏

刷题笔记:力扣第138题-随机链表的复制

本题难点在于处理带随机指针的链表拷贝,需避免重复创建节点。解法一使用哈希表记录原节点与新节点的映射,通过递归实现,时间与空间复杂度均为O(n)。解法二采用原地拼接法:在每个原节点后插入拷贝节点,再统一设置random指针,最后拆分链表,无需额外空间,时间复杂度O(n),空间复杂度O(1),更为高效。
原创
博文更新于 2026.09.21 ·
324 阅读 ·
1 点赞 ·
0 评论 ·
5 收藏

刷题笔记:力扣第25题-K个一组反转链表

本题要求将链表按k个一组进行反转,且空间复杂度需为O(1)。核心思路是先统计节点总数,确定完整组数,再通过哑节点辅助,逐组原地反转,维护前驱与头尾连接。时间复杂度O(n),空间复杂度O(1)。递归解法更直观:每组翻转后递归处理剩余部分,返回新头并连接,空间复杂度O(n/k)。两种方法均高效,原地反转更适合内存受限场景。
原创
博文更新于 2026.09.21 ·
152 阅读 ·
2 点赞 ·
0 评论 ·
4 收藏

刷题笔记:力扣第24题-两两交换链表中的节点

本题要求两两交换链表中相邻的奇偶节点。采用迭代法时,使用哑节点简化处理,通过指针操作依次交换每对节点,时间复杂度O(n),空间复杂度O(1)。递归法则通过递归调用实现,每次将后续已交换部分接回当前节点,逻辑清晰但空间复杂度为O(n)。两种方法均有效,递归更简洁,迭代更省空间。
原创
博文更新于 2026.09.20 ·
268 阅读 ·
3 点赞 ·
0 评论 ·
4 收藏

刷题笔记:力扣第21题-合并两个有序链表

本题通过双指针合并两个升序链表,采用哑节点简化操作。迭代法遍历两链表,比较节点值并接入较小者,剩余部分直接连接。优化后代码更简洁,使用三目运算符处理剩余节点。递归法则以“取小节点+递归合并剩余”为核心,逻辑清晰。时间复杂度均为O(m+n),空间复杂度迭代为O(1),递归为O(m+n)(栈空间)。
原创
博文更新于 2026.09.20 ·
146 阅读 ·
2 点赞 ·
0 评论 ·
2 收藏

刷题笔记:力扣第141题-环形链表

本题为力扣第142题的简化版,仅需判断链表是否有环。使用Floyd快慢指针算法:快指针每次走两步,慢指针每次走一步。若快慢指针相遇,则存在环;若快指针到达末尾(为NULL),则无环。时间复杂度O(n),空间复杂度O(1)。
原创
博文更新于 2026.09.20 ·
177 阅读 ·
4 点赞 ·
0 评论 ·
4 收藏

刷题笔记:力扣第234题-回文链表

本文介绍了判断链表是否为回文的两种方法:第一种使用栈,时间复杂度O(n),空间复杂度O(n);进阶方法采用快慢指针定位中点,反转后半段链表,再双指针比较,实现空间复杂度O(1),时间复杂度仍为O(n),更高效。
原创
博文更新于 2026.09.20 ·
158 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

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

本文总结了反转单链表的三种解法:迭代法(双指针)与递归法。核心思想是逐个反转节点指向,维护前驱指针 pre 和当前指针 cur。迭代法时间复杂度 O(n),空间复杂度 O(1),代码简洁高效;递归法逻辑清晰,通过函数自调实现反转。最终推荐使用标准迭代模板,无需额外判空,通用性强,适用于所有链表反转场景。
原创
博文更新于 2026.09.20 ·
217 阅读 ·
9 点赞 ·
0 评论 ·
5 收藏

刷题笔记:力扣第240题-搜索二维矩阵II

本文分析了在有序二维矩阵中搜索目标值的三种方法:暴力遍历(O(mn))、逐行二分查找(O(mlogn))和最优的Z字形查找(右上角双指针法,O(m+n))。后者通过从右上角出发,每步排除一行或一列,效率最高。代码简洁,时间复杂度最优,空间复杂度为O(1),是本题的最佳解法。
原创
博文更新于 2026.09.19 ·
360 阅读 ·
4 点赞 ·
0 评论 ·
5 收藏

刷题笔记:力扣第41题-缺失的第一个正数

本题要求在O(1)空间复杂度下寻找缺失的第一个正整数。解法一利用原数组标记,将非正数和大于n的数置为n+1,再通过取绝对值标记对应下标为负,表示该数存在;最后遍历找到首个正数位置,返回其下标+1。解法二采用置换法,将每个在[1,n]范围内的数放到对应下标位置,最终遍历发现不匹配处即为答案。两种方法时间复杂度均为O(n),空间复杂度O(1)。注意置换时需用while循环并避免死循环,且交换顺序不可颠倒。
原创
博文更新于 2026.09.19 ·
365 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

刷题笔记:力扣第238题-除了自身以外数组的乘积

本题要求计算数组中除自身外所有元素的乘积,不能使用除法。初解需用左右前缀乘积数组,时间与空间复杂度均为O(n)。进阶解法通过双指针技巧,在结果数组上直接累积左右乘积,仅用一次遍历,实现O(n)时间复杂度与O(1)空间复杂度,为最优解。
原创
博文更新于 2026.09.19 ·
357 阅读 ·
3 点赞 ·
0 评论 ·
3 收藏

刷题笔记:力扣第48题-旋转图像

本文详细分析了二维矩阵原地顺时针旋转90°的两种解法。第一种基于“覆写环”思想,通过四元素循环交换,巧妙利用坐标变换公式实现原地旋转,时间复杂度O(n²),空间复杂度O(1)。第二种采用边界控制法,以四边为单位逐层交换,逻辑清晰易记,同样达到最优复杂度。两种方法均避免额外空间,且可通过图示快速推导下标关系,适合面试实战。
原创
博文更新于 2026.09.18 ·
298 阅读 ·
11 点赞 ·
0 评论 ·
4 收藏
加载更多