代码随想录算法训练营总结 | LeetCode

动态规划:

动态规划基础:初步体验动态规划五部曲的解题方法(1、确定dp数组含义。2、归纳出递推公式。3、初始化dp数组开头元素。4、确定遍历顺序。5、验证。),需要能够从题目中总结出随着数字变化的一般规律。

背包问题:在动态规划基础上丰富了数组含义,依旧是靠动态规划五步曲解题,不过在这一部分笔者认为需要重点搞清楚内外for循环各遍历什么,且遍历顺序是怎样的(大部分情况是外层遍历物品,内层遍历背包容量,且容量要倒序遍历,防止一个物品被放入数组多次)。

打家劫舍:这类问题dp数组的下表就不是代表容量了,而是代表最多处理到这个位置,前面的那些位置要怎样处理才能使结果最优要看题目的安排(让你要间隔一个处理啊等等)。

股票系列:股票系列题目和打家劫舍类似,下标也是代表遍历到的位置。遍历顺序和打家劫舍一样,也是顺序遍历。打家劫舍类题目更像一种状态转换,每次赋值给dp数组元素某个状态时,都要考虑它可以由什么状态转换而来。

子序列问题:子序列问题要注意锚定到背包问题上来,外层for循环是什么,内层for循环是什么,各代表什么含义,尤其注意dpi代表的是以数组i元素结尾的字符串的最长递增子序列(注意这个字序列是以i结尾,一定要包含i)。并且这类问题需要一个中间结果,每次求出子序列都要做比较把最大的子序列长度复制给这个中间变量,最后输出中间变量。而背包问题、打家劫舍、股票系列等问题则不需要中间结果,直接求出dp数组,最后输出dpsize-1即可。

单调栈:

单调栈,顾名思义,以单调递增或者单调递减的顺序将数组的元素存入栈内。目的是在计算出每个元素对应的结果前将元素暂时保存在栈中,将来满足了要计算条件的时候,再将元素从栈中push出来。因为数组是从前往后遍历的,所以栈中元素的下标一定会遵从从小到大的顺序。

相关推荐
rit84324991 天前
MATLAB近红外光谱预处理:平滑与求导(MSV方法)
数据结构·算法·matlab
蚂蚁数据AntData1 天前
从ChatBI到业务记忆:重新定义数据智能的生产力边界
大数据·网络·数据库·人工智能·算法
_日拱一卒1 天前
LeetCode:22括号生成
算法·leetcode·职场和发展
cfm_29141 天前
JVM垃圾收集算法与收集器深度解析
jvm·测试工具·算法·性能优化
郝学胜_神的一滴1 天前
干货版《算法导论》09:让哈希表稳如泰山的终极解法
数据结构·算法
CC数学建模1 天前
2026年第十六届APMCM 亚太地区大学生数学建模竞赛(中文赛项)赛题C题:创业社区规划与资源配置优化问题完整思路、代码、模型、文章,全网首发高质量分享!
python·算法·数学建模
徐小夕1 天前
我们放弃了单Agent方案:HiCAD 3.0 用 Harness 做多Agent编排,把3D建模的准确率提升了30%
前端·算法·github
洛水水1 天前
【力扣100题】88.多数元素
数据结构·算法·leetcode
Shan12051 天前
无向图的Hierholzer算法流程(一)
算法
一切皆是因缘际会1 天前
频域特征解构底层机理与双域融合鉴伪算法优化
人工智能·算法·ai·架构