LeetCode 热题100 多维动态规划专题解析
多维动态规划是动态规划的扩展,它应用于解决更复杂的问题,如不同路径、最小路径和等。在 LeetCode 热题100 中,多维动态规划题目测试你对这种算法的高级应用。
1. 不同路径
题目描述:在一个网格中,从左上角到右下角,每次只能向下或向右移动,求不同的路径数量。
解题思路:使用动态规划。dp[i][j] = dp[i-1][j] + dp[i][j-1]。
2. 最小路径和
题目描述:在一个矩阵中,找到从左上角到右下角的最小路径和。
解题思路:使用动态规划。dp[i][j] = matrix[i][j] + min(dp[i-1][j], dp[i][j-1])。
3. 最长回文子串
题目描述:给定一个字符串,找出它的最长回文子串。
解题思路:使用动态规划。dp[i][j] = true if s[i] == s[j] and dp[i+1][j-1] else false。
4. 最长公共子序列
题目描述:给定两个字符串,找出它们的最长公共子序列。
解题思路:使用动态规划。dp[i][j] = dp[i-1][j-1] if s1[i] == s2[j] else max(dp[i-1][j], dp[i][j-1])。
5. 编辑距离
题目描述:给定两个字符串,计算它们之间的编辑距离。
解题思路:使用动态规划。dp[i][j] = dp[i-1][j-1] if s1[i] == s2[j] else 1 + min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1])。