LeetCode 300最长递增子序列 674最长连续递增序列 718最长重复子数组 | 代码随想录25期训练营day52

动态规划算法10

LeetCode 300 最长递增子序列 2023.12.15

int lengthOfLIS(vector<int>& nums) {
   
    //创建变量result存储最终答案,设默认值为1
    int result = 1;
    //1确定dp数组,dp[i]表示以nums[i]为结尾的子数组的最长长度
    vector<int> dp(nums.size(), 1);
    //3初始化,所有元素默认的长度都为1,在创建时均已初始化
    //2确定递推公式,4确定遍历顺序
    //递推公式dp[i]表示以nums[i]为结尾的最长长度=max(以比nums[i]小的值结尾的最长长度+1(nums[i]),dp[i])
    //先正序遍历nums数组,然后可以正序或倒序遍历(0, i)更新dp[i]
    for (int i = 1; i < nums.size(); i++)
    {
   

        for (int j = 0; j < i; j++)
        {
   
            if(nums[j] < nums[i])
                dp[i] = max(dp[j] + 1, dp[i]);
        }
        //更新result值,为当前数组的递增序列最长长度
        if(result < dp[i])
            result = dp[i];
    }
    return result;
}

LeetCode 674 最长连续递增序列 2023.12.15

int findLengthOfLCIS(vector<int>& nums) {
   
    //创建变量result存储最终答案,设默认值为1
    int result = 1;
    //1确定dp数组,dp[i]表示以nums[i]为结尾的连续递增子数组的最长长度
    vector<int> dp(nums.size(), 1);
    //3初始化,所有元素默认的长度都为1,在创建时均已初始化
    //2确定递推公式,4确定遍历顺序
    //递推公式dp[i]表示:如果nums[i-1]<nums[i],
    //那么以nums[i]为结尾的连续递增子数组最长长度=dp[i-1]+1
    for (int i = 1; i < nums.size(); i++)
    {
   
        if(nums[i] > nums[i-1])
            dp[i] = dp[i-1] + 1;
        //更新result值,为当前数组的递增序列最长长度
        if(result < dp[i])
            result = dp[i];
    }
    return result;
}

LeetCode 718 最长重复子数组 2023.12.15

int findLength(vector<int>& nums1, vector<int>& nums2) {
   
    //创建变量result存储最终答案,设默认值为1
    int result = 0;
    //1确定dp二维数组,dp[i][j]表示以nums1[i-1]、nums2[j-1]结尾的相同子数组的最大长度
    vector<vector<int>> dp(nums1.size()+1, vector<int>(nums2.size()+1, 0));
    //3初始化,第一行和第一列必须初始化,意义上为0
    //2确定递推公式,4确定遍历顺序
    //如果nums1[i-1]、nums2[j-1]相同,那么dp[i][j]+1
    //顺序遍历
    for (int i = 1; i <= nums1.size(); i++)
    {
   
        for(int j = 1; j <= nums2.size(); j++)
        {
   
            if(nums1[i-1] == nums2[j-1])
                dp[i][j] = dp[i-1][j-1] + 1;
            //更新相同数组长度最大值
            if(result < dp[i][j])
                result = dp[i][j];
        }
    }
    return result;
}

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2023-12-19 05:44:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-19 05:44:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-19 05:44:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-19 05:44:02       20 阅读

热门阅读

  1. 创建型模式 | 单例模式

    2023-12-19 05:44:02       37 阅读
  2. Qt之图像处理

    2023-12-19 05:44:02       35 阅读
  3. GO语言实现视频分割

    2023-12-19 05:44:02       33 阅读
  4. 前端不同架构的分层设计

    2023-12-19 05:44:02       39 阅读
  5. 开发语言:ArkTS

    2023-12-19 05:44:02       47 阅读
  6. node.js 全部进程挂了,如何使用pm2恢复?

    2023-12-19 05:44:02       43 阅读
  7. Node.js中npm中ws的WebSocket协议的实现

    2023-12-19 05:44:02       41 阅读
  8. 访问者模式

    2023-12-19 05:44:02       37 阅读
  9. 第八章 排序 选择排序

    2023-12-19 05:44:02       31 阅读