![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线性DP
MrDing_CoolPig
这个作者很懒,什么都没留下…
展开
-
最大子序和
53. 最大子序和 来源: LeetCode 53. 最大子序和 题目描述 53. 最大子序和 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 进阶: 如果你已经实现复杂度为 O(n) 的解法,尝试...原创 2020-04-23 18:41:21 · 106 阅读 · 0 评论 -
买卖股票的最佳时机 II
122. 买卖股票的最佳时机 II 来源: LeetCode 122. 买卖股票的最佳时机 II 题目描述 122. 买卖股票的最佳时机 II 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 1: 输...原创 2020-04-23 17:40:36 · 103 阅读 · 0 评论 -
通配符匹配
44.通配符匹配 来源LeetCode:44 通配符匹配 这道题和编辑距离很像 原谅我只会动态规划的解法 主要在于如何特殊处理* class Solution { public: bool isMatch(string s, string p) { vector<vector<bool>> dp(s.size()+1, vector<bool...原创 2020-04-15 17:18:59 · 138 阅读 · 0 评论 -
编辑距离
编辑距离 字符串word1和字符串word2 定义一个二维dp数组dp[i][j]表示word1 的[0,i)子串与word2[0,j)子串相匹配的最小操作数 对于word1[i] 和 word2[j] word1[i] == word2[j] dp[i][j] = dp[i-1][j-1] word1[i] != word2[j] dp[i][j] = dp[i][j-1] + 1 add ...原创 2020-04-15 13:26:48 · 111 阅读 · 0 评论 -
最长上升子序列
来源:LeetCode300. 最长上升子序列 动态规划 记录每一个以i为结尾的LIS dp[i]与在其之前的所有数比较,小于就加入它,判断所有加入后的序列的最大值即为以该点结尾的最大值 状态转换方程 dp[i] = max(dp[i], dp[j] + 1) (其中: j from i-1 downto 0) 初始化 dp[0] = 1; 输出: max(dp[i]) i from 0 t...原创 2020-04-14 21:04:01 · 125 阅读 · 0 评论 -
乘积最大子数组
152 乘积最大子数组 来源 LeetCode :乘积最大子数组 非动态规划 一开始我并没有用DP 而是分情况讨论的,即通过0将数据分为几段,因为含有0的必定会使结果为0 然后就是考虑负数 在所分的每段里计算乘积,如果负数个数为奇数,将最后出现的那段除掉,然后输出最大值再比较 代码非常长 但是可以跑过 长的我自己都不想看,没脸看,看不明白啊,娘的 class Solution { public...原创 2020-04-14 21:02:54 · 427 阅读 · 0 评论 -
俄罗斯套娃
354 俄罗斯套娃 LIS的变种 这道题我只能想到大致的思路但最关键的点还是想不到,证明自己还是个菜鸡 这道题很容易能发现是一道DP,本质上是一个二维的求LIS的问题 只要明白一点就可以很容易做出 固定一维 让另外一维降序排列(important) 理解这个就直接可以做出来了 维护原序列不变的情况下求这种情况的递增子序列(w相同情况下的处理) 可以看这篇题解写的很棒 来源: Labuladon...原创 2020-04-14 20:10:44 · 187 阅读 · 0 评论 -
三角形的最小路径和
120. 三角形最小路径和 自顶向下 来源 LeetCode:三角形最小路径和 状态转换: dp[i][j] = min{dp[i-1][j], dp[i-1][j+1]} ( 1< j < len(triangle(i-1)) - 1) 以下是最开始的代码,不简洁也不整洁,实不相瞒我自己再看的时候都蒙了,后续整理了下 class Solution { public: i...原创 2020-04-14 19:47:41 · 137 阅读 · 0 评论 -
最长公共子序列
1143 最长公共子序列 LeetCode: 最长公共子序列 首先需要先理解LCS是具有最优子结构的,证明过程可以参考 算法导论(第四版) 思路如下 dp[i][j]表示text1[0,i] 和 text2[0,j]的LCS text[i] 与 text[j] 两个字符 存在两个状态相等或者不相等 text[i] == text[j] 一定为LCS的一部分 则dp[i][j] = dp[i-1...原创 2020-04-14 17:52:27 · 178 阅读 · 0 评论