![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法学习笔记
文章平均质量分 66
ZhuYuxi333
这个作者很懒,什么都没留下…
展开
-
【代码随想录】【动态规划】子序列问题 - 连续、不连续
同。原创 2024-06-03 09:07:20 · 246 阅读 · 0 评论 -
【代码随想录】【动态规划】打家劫舍
dp数组:最终结果:在计算时:递推公式:递推公式适用范围:令递推公式中所有下标都大于等于0小于n,即,计算得到:计算顺序:在计算时需要用到,因此应该从前向后计算初始化:可以使用递推公式进行计算的范围是,因此需要对 的情况进行初始化解法二这是解法一的递推公式:对于其中的第二个式子,如果将代换成,则递推公式变为:可以使用递推公式进行计算的范围也从变为。观察这个递推公式发现,其实不用单独区分和,可以直接将定义为:在下标小于等于i的房屋中偷窃,能得到的最大金额。在计算dp[i]时:递推公式:这两种原创 2024-05-16 17:29:17 · 626 阅读 · 0 评论 -
【代码随想录】【动态规划】背包问题 - 完全背包
受到前面377. 组合总和 Ⅳ的启发,我发现其实背包问题在先遍历背包容量再遍历物品的计算顺序下的一维dp优化解法就是按照“把整个过程看作是一系列的决策过程,而在计算dp[i]时主要考虑的是在本轮如何进行决策”的思路(这是解决动态规划问题的基本思路——多阶段决策)进行的,按照这一思路直接去思考会直观的多!因此接下来我将尝试按照这种思路来解决问题,第二轮刷题时再统一进行整理。279. 完全平方数共有⌊n⌋⌊n⌋个物品,1≤n≤⌊n⌋1≤n≤⌊n⌋。原创 2024-05-13 20:43:48 · 737 阅读 · 0 评论 -
【代码随想录】【动态规划】背包问题 - 01背包
在计算每一行时既可以按照从左向右的顺序计算,也可以按照从右向左的顺序计算,因为计算dp[i][j]时只会用到前一行的数据,不会用到本行该位置之前的数据(dp[i][0…综上所述,我们可以只用一行(即一个长度为V+1的数组)作为dp数组,滚动存储每一行的计算结果,不再需要的数据被新计算的结果覆盖使用。j]位置的值,在计算dp[i][j]之前要保证这些位置的值已经计算过了。但是在计算每一列时必须按照从上向下的顺序计算,因为计算dp[i][j]时会用到本行该位置之前的数据(dp[i-1][j])。原创 2024-05-12 13:19:51 · 956 阅读 · 0 评论 -
【代码随想录】【动态规划】基础理论 基础题目
代码随想录动态规划 - 基础题目原创 2024-05-04 22:19:22 · 341 阅读 · 0 评论 -
【代码随想录】链表
int val;203. 移除链表元素。原创 2024-04-29 15:04:05 · 248 阅读 · 0 评论 -
【代码随想录】【数组】螺旋矩阵
leetcode 54. 螺旋矩阵Ⅰ 59. 螺旋矩阵 Ⅱ原创 2024-04-26 11:09:11 · 199 阅读 · 0 评论 -
【代码随想录】【数组】移除元素 双指针 快慢指针插入元素 左右指针分区
几道关于双指针的问题,涉及了双指针中的左右指针分区和快慢指针插入元素两类经典问题。原创 2024-04-18 22:48:49 · 648 阅读 · 1 评论 -
【代码随想录】【数组】二分查找
二分查找原创 2024-04-18 15:43:51 · 852 阅读 · 0 评论 -
【牛客网动态规划专项】DP23 不相邻取数
【代码】【牛客网动态规划专项】DP23 不相邻取数。原创 2023-01-02 10:31:09 · 155 阅读 · 0 评论 -
【牛客网动态规划专项】DP21 最长回文子序列
如何判断一个字符串是否为回文字符串?每一次从两端各取一个字符判断这两个字符是否相等,就这样从两端向中间,如果每一次取出的两个字符都相等,那就是回文字符串。上面的判断过程中“每次需要考虑字符串两端的字符”,自然而然地想到应该用二维DP,定义dp[i][j]的含义为下标从i到j的字符str[i...j]的最长回文子序列的长度。当字符串str[i...j]str[i]str[j]str[i...j]str[i...j]str[i]str[j]str[i...j]str[i]str[j]str[i...j]原创 2023-01-02 10:27:57 · 64 阅读 · 0 评论 -
【牛客网动态规划专项】DP21 正则表达式匹配
首先,将str和pattern都从下标1开始存储。定义dp[i][j]的含义为:str的前i个字符str[1...i]与pattern的前j个字符是否匹配。初始化考虑的是dp[i][0]和dp[0][j],也就是当pattern为空字符串或str为空字符串时的情况,有时也需要将两者都为空的情况dp[0][0]单独讨论。在开始讨论之前需要注意题目中的要求:'*'。a*b*c*d*e**自底向上计算就是根据当前问题与子问题之间的关系(也称“状态转移规律”)按照一定地顺序对备忘录中的表项进行计算。根据。原创 2023-01-02 09:43:33 · 103 阅读 · 0 评论 -
【牛客网动态规划专项】DP20 最短编辑距离
将字符串s1转换为s2的过程 与 将字符串从s2转换为s1的过程互 为逆过程,所需的编辑次数相同,因此只需要考虑一种情况即可。定义状态dp[i][j]的含义为:将s1的前i个字符s1[1…i] 转换为 s2的前j个字符s2[1…j]所需的最少编辑次数。首先注意字符串s1[1…m] 的下标是从1开始的。原创 2022-12-31 17:10:57 · 85 阅读 · 0 评论 -
【牛客网动态规划专项】DP19 最长公共子序列(一)
的含义为:s1从头到下标i的子字符串(s1[0…i]) 与 s1从头到下标j的子字符串(s2[0…j]) 的最长公共子序列的长度。原创 2022-12-31 16:56:19 · 72 阅读 · 0 评论 -
【牛客网动态规划专项】DP18 滑雪 #记忆化 #带备忘录的递归
这是一道「」的经典题目,memoization其实就是“带备忘录的递归”,将之前已经计算过的问题的答案存储起来,下一次再遇到时就不用计算,可以直接返回结果。定义状态dp[i][j]的含义为:以map[i][j]开始的最长递减路线的长度。原创 2022-12-31 10:53:21 · 133 阅读 · 0 评论 -
【牛客网动态规划专项】DP17 信封嵌套
首先将信封按照从小到大的顺序进行排序:先按照信封的宽a排序,如果宽a相同则按照长b排序。然后求排序后letters数组的最长严格上升子序列。需要注意的是:之前在嘴上上升子序列中,将当前元素arr[i]续到之前的某一个dp[k]之后的判断条件是,现在对元素大小的定义发生了变化,判断条件应该是。原创 2022-12-23 10:39:51 · 78 阅读 · 0 评论 -
【牛客网动态规划专项】DP16 合唱队形
题目中所描述的“合唱队形”,可以理解为。如果想计算以stu[i]为最大值的最长先升后降子序列,可以分别计算出「以stu[i]结尾的最长上升子序列」和「以stu[i]开始的最长下降子序列」,然后再将两者拼接起来。dp_asc[i]dp_desc[i]则以stu[i]为最大值的最长先升后降子序列的长度为dp_asc[i]+dp_desc[i]−1,然后从所有位置中选出计算结果最大的即可。原创 2022-12-21 18:08:08 · 140 阅读 · 0 评论 -
【牛客网动态规划专项】DP15 拦截导弹
Q1:很明确就是最长递减子序列的长度,与「DP14最长上升子序列」的求解方法类似。:最少的下降序列个数就等于整个序列最长上升子序列的长度。原创 2022-12-21 16:13:14 · 89 阅读 · 0 评论 -
【牛客网动态规划专项】DP13 过河卒
棋盘可以表示为map[0...n][0...m],要注意本题的棋盘是一个大小为(n+1)×(m+1)的矩阵。(x,y){(x1,y1),∣x1−x∣+∣y1−y∣=3,x1=x,y1=y}用一个函数。原创 2022-12-20 16:14:00 · 76 阅读 · 0 评论 -
【牛客网动态规划专项】DP12 龙与地下城游戏问题
【代码】【牛客网动态规划专项】DP12 龙与地下城游戏问题。原创 2022-12-19 16:47:32 · 269 阅读 · 0 评论 -
【算法笔记】最短路径——单源最短路径,Dijsktra算法(贪心算法)
最短路径算法——Dijkstra原创 2022-11-27 15:10:51 · 828 阅读 · 0 评论 -
【算法笔记】图的存储
图的存储方式:邻接矩阵、邻接表(vector实现、链表前向星)原创 2022-11-23 16:32:27 · 145 阅读 · 0 评论