当前位置:   article > 正文

LeeCode Practice Journal | Day43_DP10

LeeCode Practice Journal | Day43_DP10

300. 最长递增子序列

题目:300. 最长递增子序列 - 力扣(LeetCode)
题解:代码随想录 (programmercarl.com)

solution
  1. public class Solution {
  2. public int LengthOfLIS(int[] nums) {
  3. int result = 1;
  4. int n = nums.Length;
  5. int[] dp = new int[n];
  6. Array.Fill(dp, 1);
  7. for(int i = 1; i < n; i ++)
  8. {
  9. for(int j = 0; j < i; j ++)
  10. {
  11. if(nums[i] > nums[j]) dp[i] = Math.Max(dp[i], dp[j] + 1);
  12. }
  13. result = dp[i] > result ? dp[i] : result;
  14. }
  15. foreach(int num in dp)
  16. {
  17. Console.WriteLine(num);
  18. }
  19. return result;
  20. }
  21. }
summary

注意:

1、数组元素要初始化为1

2、返回值不是dp[i],是dp数组中的最大值

674. 最长连续递增序列

题目:674. 最长连续递增序列 - 力扣(LeetCode)
题解:代码随想录 (programmercarl.com)
上题的变体,与nums[i]前每一个连续的元素比较变为前一个元素比较

solution
  1. public class Solution {
  2. public int FindLengthOfLCIS(int[] nums) {
  3. int n = nums.Length;
  4. int[] dp = new int[n];
  5. Array.Fill(dp, 1);
  6. int result = 1;
  7. for(int i = 1; i < n; i ++)
  8. {
  9. if(nums[i] > nums[i-1]) dp[i] = dp[i-1] + 1;
  10. result = Math.Max(result, dp[i]);
  11. }
  12. return result;
  13. }
  14. }
summary

718. 最长重复子数组

题目:718. 最长重复子数组 - 力扣(LeetCode)
题解:代码随想录 (programmercarl.com)

solution
  1. public class Solution {
  2. public int FindLength(int[] nums1, int[] nums2) {
  3. int n = nums1.Length;
  4. int m = nums2.Length;
  5. int[,] dp = new int[n,m];
  6. int result = 0;
  7. for(int i = 0; i < n; i ++)
  8. {
  9. for(int j = 0; j < m; j ++)
  10. {
  11. if(i == 0 || j == 0) dp[i,j] = nums1[i] == nums2[j] ? 1 : 0;
  12. else dp[i,j] = nums1[i] == nums2[j] ? dp[i-1, j-1] + 1: 0;
  13. result = Math.Max(result, dp[i,j]);
  14. }
  15. }
  16. return result;
  17. }
  18. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/1001920
推荐阅读
相关标签
  

闽ICP备14008679号