免费的招聘网站,牡丹江商城网站开发设计,微商城怎么开通需要多少钱,网站 申请目录
LeetCode 1143.最长公共子序列 动态规划五步曲#xff1a; 1.确定dp[i][j]的含义 2.找出递推公式 3.初始化dp数组 4.确定遍历顺序 5.打印dp数组 LeetCode 1035.不相交的线 LeetCode 53.最大子序列和#xff08;动态规划#xff09; 动态规划五步曲#xff1a; 1.确定…目录
LeetCode 1143.最长公共子序列 动态规划五步曲 1.确定dp[i][j]的含义 2.找出递推公式 3.初始化dp数组 4.确定遍历顺序 5.打印dp数组 LeetCode 1035.不相交的线 LeetCode 53.最大子序列和动态规划 动态规划五步曲 1.确定dp[i]的含义 2.找出递推公式 3.初始化dp数组 4.确定遍历方向 5.打印dp数组 LeetCode 1143.最长公共子序列 文章讲解代码随想录 视频讲解动态规划子序列问题经典题目 | LeetCode1143.最长公共子序列_哔哩哔哩_bilibili 力扣题目LeetCode 1143.最长公共子序列 动态规划五步曲
1.确定dp[i][j]的含义 dp[i][j]:在nums1[i]和nums2[j]中所对应的最长公共最长子序列的最大长度为dp[i][j] 2.找出递推公式
if(char1 char2){dp[i][j] dp[i-1][j-1] 1;
}else{dp[i][j] Math.max(dp[i-1][j], dp[i][j-1]);
}
3.初始化dp数组 dp[i][0] 0; dp[j][0] 0; 4.确定遍历顺序 从前往后从上往下遍历 5.打印dp数组 代码如下java
class Solution {public int longestCommonSubsequence(String text1, String text2) {int[][] dp new int[text1.length() 1][text2.length() 1];for(int i 1; i text1.length(); i){char char1 text1.charAt(i-1);for(int j 1; j text2.length(); j){char char2 text2.charAt(j-1);if(char1 char2){dp[i][j] dp[i-1][j-1] 1;}else{dp[i][j] Math.max(dp[i-1][j], dp[i][j-1]);}}}return dp[text1.length()][text2.length()];}
} LeetCode 1035.不相交的线 文章讲解代码随想录 视频讲解动态规划之子序列问题换汤不换药 | LeetCode1035.不相交的线_哔哩哔哩_bilibili 力扣题目LeetCode 1035.不相交的线 本题属于最长公共子序列套壳问题只要理解不相交的线实际上就是要求最长公共子序列。 代码如下java
class Solution {public int maxUncrossedLines(int[] nums1, int[] nums2) {int[][] dp new int[nums1.length 1][nums2.length 1];for(int i 1; i nums1.length; i){for(int j 1; j nums2.length; j){if(nums1[i-1] nums2[j-1]){dp[i][j] dp[i-1][j-1] 1;}else{dp[i][j] Math.max(dp[i-1][j], dp[i][j-1]);}}}return dp[nums1.length][nums2.length];}
} LeetCode 53.最大子序列和动态规划 文章讲解代码随想录 视频讲解看起来复杂其实是简单动态规划 | LeetCode53.最大子序和_哔哩哔哩_bilibili 力扣题目LeetCode 53.最大子序列和动态规划 动态规划五步曲
1.确定dp[i]的含义 dp[i]下标为i的最大子数组和为dp[i] 2.找出递推公式
dp[i] Math.max(dp[i-1]nums[i], nums[i]);
3.初始化dp数组
dp[0] nums[0];
int res nums[0];
4.确定遍历方向 从前往后遍历 5.打印dp数组 代码如下Java
class Solution {public int maxSubArray(int[] nums) {if(nums.length 1) return nums[0];int[] dp new int[nums.length];dp[0] nums[0];int res nums[0];for(int i 1; i nums.length; i){dp[i] Math.max(dp[i-1]nums[i], nums[i]);res Math.max(res, dp[i]);}return res;}
}