day-53 代码随想录算法训练营(19)动态规划 part 14

1143.最长公共子序列(坐牢)

cpp 复制代码
class Solution {
public:
    int longestCommonSubsequence(string text1, string text2) {
        int n=text1.size(),m=text2.size();
        vector<vector<int>>dp(n+1,vector<int>(m+1,0));
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                if(text1[i-1]==text2[j-1])
                    dp[i][j]=dp[i-1][j-1]+1;
                else
                    dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
                //从 0~i-2 和 0~j-1 中,0~i-1 和 0~j-2中,找最长公共子序列
            }
        }
        return dp[n][m];
    }
};

1035.不相交的线

思路:啊听说跟上一题一摸一样
cpp 复制代码
class Solution {
public:
    int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {
        int n=nums1.size(),m=nums2.size();
        vector<vector<int>>dp(n+1,vector<int>(m+1,0));
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                if(nums1[i-1]==nums2[j-1]) dp[i][j]=dp[i-1][j-1]+1;
                else
                    dp[i][j]=max(dp[i][j-1],dp[i-1][j]);
            }
        }
        return dp[n][m];
    }
};

53.最大子序和

思路一:直接进行累加(贪心)
  • 当和超过最大值时进行更新
  • 当和小于等于0时把和置空
cpp 复制代码
class Solution {
public:
    int maxSubArray(vector<int>& nums) {
       int res=INT_MIN,sum=0;
       for(int i=0;i<nums.size();i++){
           sum+=nums[i];
           if(sum>res) res=sum;
           if(sum<=0) sum=0;
       }
       return res;
    }
};
思路二:动态规划
  • 1.dp存储:以numsi结尾的最大子数组和为dpi
  • 2.动态转移方程:dpi=max(numsi+dpi-1,numsi)
  • 3.初始化:dp0=nums0
  • 4.遍历顺序:1~n
cpp 复制代码
class Solution {
public:
    int maxSubArray(vector<int>& nums) {
       int n=nums.size();
       vector<int>dp(n,0);
       dp[0]=nums[0];
       int res=dp[0];
       for(int i=1;i<n;i++){
           dp[i]=max(dp[i-1]+nums[i],nums[i]);//最大值在上一位+当前位 和 当前位之间
           if(dp[i]>res) res=dp[i];//更新最大值
       }
       return res;
    }
};
相关推荐
Jerry3 小时前
LeetCode 101. 对称二叉树
算法
可编程芯片开发4 小时前
基于MPPT最大功率跟踪的离网光伏发电系统Simulink建模与仿真
算法
AI科技星4 小时前
线性算子不是空间映射函数,是全域双螺旋场之间拉伸、旋转、耦合、坍缩的跨空间标准化变换载体《全域数学vs传统数学:人类文明进阶200讲》第80讲
线性代数·算法·矩阵·数据挖掘·回归·乖乖数学·全域数学
米罗篮4 小时前
矩阵快速幂 (Exponentiation By Squaring Applied To Matrices)
c++·线性代数·算法·矩阵
dream_home84074 小时前
图像算法模型NPU适配与算法服务实战指南
人工智能·python·算法·npu 图像服务
大鱼>5 小时前
多宠物家庭智能管理平台:云端架构与多设备协同实战
python·算法·iot·宠物
To_OC5 小时前
LC 22 括号生成:刷完这道题,我终于搞懂回溯剪枝了
javascript·算法·leetcode
To_OC6 小时前
LC 39 组合总和:回溯入门必刷题,我踩过的两个坑都在这了
javascript·算法·leetcode
数字杂技师6 小时前
每条推荐都很准,为什么我还是越刷越无聊?
算法
兰令水6 小时前
hot100【acm版】【2026.7.14打卡-java版本】
java·数据结构·算法·leetcode·面试