代码随想录算法训练营第五十二天 | 连续子序列
● 今日学习的文章链接和视频链接
● 看到题目的第一想法
系列题来了
● 看完代码随想录之后的想法
很清晰
● 实现过程中遇到哪些困难
718
● 解题代码
-
点击查看代码
class Solution { public int lengthOfLIS(int[] nums) { if(nums.length == 1) return nums.length; int[] dp = new int[nums.length]; int res = 0; Arrays.fill(dp, 1); for (int i = 1; i < dp.length; i++) { for (int j = 0; j < i; j++) { if (nums[i] > nums[j]) { dp[i] = Math.max(dp[i], dp[j] + 1); } res = Math.max(res, dp[i]); } } return res; } } -
点击查看代码
class Solution { public int findLengthOfLCIS(int[] nums) { if(nums.length == 1) return nums.length; int[] dp = new int[nums.length]; int res = 0; int begin = 0; Arrays.fill(dp, 1); for (int i = 1; i < dp.length; i++) { for (int j = begin; j < i; j++) { if (nums[i] > nums[j]) { dp[i] = Math.max(dp[i], dp[j] + 1); }else{ begin = j+1; dp[i] = 1; continue; } res = Math.max(res, dp[i]); //System.out.println("res = " + res); } } if(res == 0) return 1; return res; } } -
点击查看代码
class Solution { public int findLength(int[] nums1, int[] nums2) { int result = 0; 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; result = Math.max(result, dp[i][j]); } } } return result; } }
● 今日收获,学习时长
今日收获:学了系列题
学习时长:1h
浙公网安备 33010602011771号