• 代码随想录算法训练营第五十二天|


    第九章 动态规划part13

    300. 最长递增子序列

    给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。

    子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。

    没有想出来,思维定式在状态定义。本题重点是递推公式:

    dp[i]:前i天包含第i天的最长递增子序列的长度

    1. class Solution {
    2. public:
    3. int lengthOfLIS(vector<int>& nums) {
    4. vector<int> dp(nums.size(),1);
    5. for(int i=0;isize();i++){
    6. for(int j=0;j
    7. if(nums[i]>nums[j]) dp[i]=max(dp[i],dp[j]+1);
    8. }
    9. }
    10. int maxLength=0;
    11. for(int i=0;isize();i++){
    12. maxLength=max(maxLength,dp[i]);
    13. }
    14. return maxLength;
    15. }
    16. };

    674. 最长连续递增序列

    给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。

    连续递增的子序列 可以由两个下标 l 和 rl < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]] 就是连续递增子序列。

     思路与上一题类似

    1. class Solution {
    2. public:
    3. int findLengthOfLCIS(vector<int>& nums) {
    4. vector<int> dp(nums.size(),1);
    5. for(int i=1;isize();i++){
    6. if(nums[i]>nums[i-1]) dp[i]=dp[i-1]+1;
    7. }
    8. int maxLength=0;
    9. for(int i=0;isize();i++){
    10. maxLength=max(maxLength,dp[i]);
    11. }
    12. return maxLength;
    13. }
    14. };

    718. 最长重复子数组

    给两个整数数组 nums1 和 nums2 ,返回 两个数组中 公共的 、长度最长的子数组的长度 

    dp[i][j]:截止nums1前i个,nums2 前j个存在的最长重复子数组的长度。

    1. class Solution {
    2. public:
    3. int findLength(vector<int>& nums1, vector<int>& nums2) {
    4. vectorint>> dp(nums1.size(),vector<int>(nums2.size(),0));
    5. for(int j=0;jsize();j++){
    6. if(nums2[j]==nums1[0]) dp[0][j]=1;
    7. }
    8. for(int i=0;isize();i++){
    9. if(nums1[i]==nums2[0]) dp[i][0]=1;
    10. }
    11. for(int i=1;isize();i++){
    12. for(int j=1;jsize();j++){
    13. if(nums1[i]==nums2[j]) dp[i][j]=dp[i-1][j-1]+1;
    14. }
    15. }
    16. int maxLength=0;
    17. for(int i=0;isize();i++){
    18. for(int j=0;jsize();j++){
    19. maxLength=max(maxLength,dp[i][j]);
    20. }
    21. }
    22. return maxLength;
    23. }
    24. };

  • 相关阅读:
    动态 SQL
    Linux之进程间通信
    手写maxpooling
    深入浅出Nginx实战与架构
    大数据打造六维车险评估体系,律商风险再出发
    基于SSH一些相关的命令
    C. Robot in a Hallway(递推/前缀和/动态规划)
    GBase8s系统表介绍(七)
    计算机毕业设计之儿童图书商城
    npm 如何更新项目最新依赖包
  • 原文地址:https://blog.csdn.net/qq_63241956/article/details/134453045