代码随想录算法训练营第五十三天 | 最长公共子序列、不相交的线、最大子数组和
● 今日学习的文章链接和视频链接
● 看到题目的第一想法
继续系列题
● 看完代码随想录之后的想法
还是有些难
● 实现过程中遇到哪些困难
1143
● 解题代码
-
点击查看代码
class Solution { public int longestCommonSubsequence(String text1, String text2) { int result = 0; int[][] dp = new int[text1.length() + 1][text2.length() + 1]; for (int i = 1; i < text1.length() + 1; i++) { char char1 = text1.charAt(i - 1); for (int j = 1; j < text2.length() + 1; 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()]; } } -
点击查看代码
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 + 1; i++) { for (int j = 1; j < nums2.length + 1; 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]; } } -
点击查看代码
public int maxSubArray(int[] nums) { if (nums.length == 0) { return 0; } int res = nums[0]; int[] dp = new int[nums.length]; dp[0] = 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; }
● 今日收获,学习时长
今日收获:学习了子序列
学习时长:1h
浙公网安备 33010602011771号