logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

动态规划专练:力扣第718、1143题

本文总结了力扣718题和1143题的动态规划解法。718题求最长重复子数组(连续),使用二维DP时当元素相等则dp[i][j]=dp[i-1][j-1]+1,可优化为一维数组逆向遍历;1143题求最长公共子序列(非连续),不等时取左或上较大值,优化为一维需正向遍历并引入pre变量保存旧值。两题核心区别在于连续性问题导致的状态转移差异,时间复杂度均为O(mn),空间优化后为O(n)。通过分析状态转移

文章图片
#动态规划#leetcode#算法
刷题笔记:力扣第19题-删除链表的倒数第N个结点

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

文章图片
#leetcode#链表
刷题笔记:力扣第11题-盛最多水的容器

本文探讨了求解容器最大面积问题的优化方法。初始采用双for循环(O(n²))被弃用,转而使用双指针法。首次实现时仅固定一端移动另一端,导致遗漏中间解。改进后采用核心策略:比较左右指针高度,移动较短的一侧指针,确保不漏解。当高度相等时,移动任意指针均不影响最优解获取。最终方案时间复杂度优化至O(n),通过动态调整指针高效找到最大面积。关键点在于理解:面积由短板高度和宽度决定,移动短边才有可能获得更大

文章图片
#leetcode#算法
刷题笔记:力扣第459题-重复的子字符串

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

文章图片
#leetcode#算法
到底了