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

动态规划:

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

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

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

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

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

单调栈:

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

相关推荐
星空露珠22 分钟前
迷你世界UGc3.0脚本Wiki[剧情动画模块管理接口 Timeline]
开发语言·数据结构·算法·游戏·lua
笨笨没好名字25 分钟前
Leetcode刷题python3版第一周(下)
linux·算法·leetcode
手写码匠34 分钟前
手写 LLM 安全护栏:从内容审核到越狱防御的完整实现
人工智能·深度学习·算法·aigc
luj_176844 分钟前
草酸与烟酸对消化及糖代谢的影响解析
服务器·c语言·开发语言·经验分享·算法
青风971 小时前
16-ADAPTRACK:基于自适应阈值的多目标跟踪匹配算法
人工智能·算法·目标跟踪
汤姆yu1 小时前
macOS系统下Aider完整安装、配置与实战使用教程
大数据·人工智能·算法·macos·github·copilot
Sam09271 小时前
【AI 算法精讲 14】TF-IDF:词频与逆文档频率
人工智能·python·算法·ai
AI科技星2 小时前
拓扑生命系统确定性理论:基于32维流形的遗传密码起源与衰老动力学( 中英双语顶刊终稿·标准数学符号)
开发语言·网络·人工智能·算法·机器学习·乖乖数学·全域数学
编程圈子2 小时前
电机驱动开发学习18. SVPWM空间矢量调制算法详解与实现
驱动开发·学习·算法
大鱼>2 小时前
机器学习基础:从零理解核心概念与算法分类
算法·机器学习·分类