LeetCode dp专题
Posted demian
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode dp专题相关的知识,希望对你有一定的参考价值。
longest valid parentheses:
dp[i]表示到i为止合法的()长度
s[i] == ‘)‘ :
dp[i] = dp[i-2] + 2 ( s[i]==‘(‘ )
dp[i] = dp[i-1] + 2 + dp[i-dp[i-1]-2] ( s[i-1] == ‘)‘ && s[i-1-dp[i-1]] == ‘(‘ )
注意判断数组下标值是否存在
72. Edit Distance
将word1转换成word2:
三种操作:插入/删除/替换 一个字符
dp[i][j]表示word1 [0, i),word2 [0, j) 子串转换成功时的最少转换次数
初始化: dp[0][j]=j 插入操作,dp[i][0]=i 删除操作
word1[i-1]==word2[j-1]: dp[i][j] = dp[i-1][j-1]
word1[i-1]!=word2[j-1]: dp[i][j] = min(dp[i-1][j-1], min(dp[i][j-1], dp[i-1][j])) + 1;
对应三种操作:替换 dp[i-1][j-1] + 1, 删除(word1[i-1]) dp[i-1][j] + 1,
插入(word1[i-1]后插入word2[j-1]才两个子串相同 <=> 删除word2[j-1]使得两个子串相同) dp[i][j-1] + 1
以上是关于LeetCode dp专题的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode之动态规划(DP)专题-63. 不同路径 II(Unique Paths II)
Leetcode之动态规划(DP)专题-1025. 除数博弈(Divisor Game)
Leetcode之动态规划(DP)专题-62. 不同路径(Unique Paths)
Leetcode之动态规划(DP)专题-53. 最大子序和(Maximum Subarray)