首页 > 其他分享 >(53/60)最长公共子序列、不相交的线、最大子序和

(53/60)最长公共子序列、不相交的线、最大子序和

时间:2024-03-28 17:15:43浏览次数:16  
标签:nums int 53 60 vector result 子序 dp size

最长公共子序列

leetcode:1143. 最长公共子序列

动态规划

思路

和最长重复子序列很像,但是这个不要求连续。

意义略有不同,因此result不需要找最大值,直接就是最末的dp元素。

代码实现

class Solution {
public:
    int longestCommonSubsequence(string text1, string text2) {
        // 0~i-1和0~j-1子串的最长公共子序列为dp[i][j]
        vector<vector<int>> dp(text1.size() + 1,vector<int>(text2.size() + 1,0));
        for(int i = 1;i <= text1.size();i++){
            for(int j = 1;j <= text2.size();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]);
                // cout<<dp[i][j]<<' ';
            }
            // cout<<endl;
        }

        return dp[text1.size()][text2.size()];
    }
};

不相交的线

leetcode:1035. 不相交的线

动态规划

代码实现

class Solution {
public:
    // 相当于最长公共子序列
    int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {
        vector<vector<int>> dp(nums1.size()+1,vector<int>(nums2.size()+1,0));

        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;
                else dp[i][j] = max(dp[i-1][j],dp[i][j-1]);
            }
        }

        return dp[nums1.size()][nums2.size()];
    }
};

最大子序和

leetcode:53. 最大子数组和

动态规划

思路

类似贪心法(如果累和为负数,从下一个开始重新计算累和),

比较之前的累和加上当前元素&当前元素自身比谁大(如果累和为负数,则舍弃当前元素)。

代码实现

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        // if(nums.size() == 1) return nums[0];
        // 以nums[i]结尾的最大连续子数组和为dp[i]
        vector<int> dp(nums.size(),0);
        dp[0] = nums[0];
        int result = nums[0];
        for(int i = 1;i < nums.size();i++){
            dp[i] = max(dp[i-1] + nums[i],nums[i]);
            if(dp[i] > result) result = dp[i];
        }
        return result;
    }
};

标签:nums,int,53,60,vector,result,子序,dp,size
From: https://www.cnblogs.com/tazdingo/p/18102129

相关文章

  • (55/60)两个字符串的删除操作、编辑距离
    两个字符串的删除操作leetcode:583.两个字符串的删除操作动态规划思路先求最长子序长度然后计算两个原字符串离最长子序长度差多少。代码实现classSolution{public:/*(之前搞错了)最长子序长度word[0:i-1]和word2[0:j-1]的最长子序长dp[i][j]if(word1[i-1]==wo......
  • (57/60)回文子串、最长回文子序列
    DP最后一集回文子串leetcode:647.回文子串动态规划代码实现classSolution{public:/*s[i:j]回文子串个数为dp[i][j]if(s[i]==s[j]){if(j-i<=1)dp[i][j]=true;elsedp[i][j]=dp[i+1][j-1];}全部初始化为0*/intcountSubstrings(strings)......
  • (58/60)每日温度、下一个更大元素Ⅰ
    每日温度leetcode:739.每日温度单调栈思路单调栈,存放元素下标。遍历一遍,每个元素和栈顶元素比较:<=栈顶元素,入栈>栈顶元素,result[st.top()]=i-st.top();弹出继续,直到遍历结束或<=栈顶元素代码实现classSolution{public:/*单调栈,存放元素下标遍历一遍,每个......
  • 补|(52/60)最长递增子序列、最长连续递增序列、最长重复子数组
    子序列问题最长递增子序列leetcode:300.最长递增子序列动态规划代码实现/*以nums[i]结尾的(含)递增子序列最长为dp[i]dp[i]由dp[0~i-1]的最大值推出if(nums[i]>nums[j])dp[i]=max(dp[i],dp[j]+1);//如果严格递增dp[0]=1;其余为0正序遍历*/classSol......
  • (60/60)last dance|柱状图中最大的矩形
    lastdance柱状图中最大的矩形leetcode:84.柱状图中最大的矩形单调栈思路和接雨水很类似,但需要首尾加0(尾0是为了触发计算,首0是为了避免首元素触发计算时没有left)注意点尾加0后还是要遍历到heights.size()-1,因为是以取出元素为基准计算的,而取出元素是当前遍历元素的上一......
  • (59/60)下一个更大元素Ⅱ、接雨水
    终于接到你下一个更大元素Ⅱleetcode:496.下一个更大元素I单调栈思路主要是循环数组的处理。直接等效为长度为2N,重复两遍的原数组即可,i<nums.size()变为i<2*nums.size()、i变为i%nums.size()。代码实现对每个元素都再遍历一遍原数组长度,,,时间复杂度O(N^2),超时了clas......
  • 听劝!24 选错 660/880/1000的人,已经二战了
    25考研的备考形势,势必跟以前不一样了。24考完,大家都发现,没有一本习题册,覆盖了考试的所有知识点。主流的模拟卷,都没有达到24卷的难度。这就意味着:一本习题册不够了!刷主流模拟卷不够了!这会需要整个考研复习的安排,作一个很大的调整。如果你还在看24以前的学长规划,它就可能......
  • Day53:WEB攻防-XSS跨站&SVG&PDF&Flash&MXSS&UXSS&配合上传&文件添加脚本
    目录MXSSUXSS:UniversalCross-SiteScriptingHTML&SVG&PDF&SWF-XSS&上传&反编译(有几率碰到)SVG-XSSPDF-XSSPython生成XSSFlash-XSS知识点:1、XSS跨站-MXSS&UXSS2、XSS跨站-SVG制作&配合上传3、XSS跨站-PDF制作&配合上传4、XSS跨站-SWF制作&反编译&上传XSS......
  • 旷场实验KT-0860——观察研究实验动物神经精神变化
    旷场是观察研究实验动物神经精神变化、进入开阔环境后的各种行为,例如动物对新开阔环境的恐惧而主要在周边区域活动,在中间区域活动较少,但动物的探究特性又促使其产生在中间区域活动的动机,也可观察由此而产生的焦虑心理。兴奋药可以明显增加自主的活动而减少探究行为,在统一些剂......
  • 解决 TS7053: Element implicitly has an any type because expression of type strin
    背景有个接口interfaceDataType{id:number;name:string;created_at:string;updated_at:string;}我的数据{"id":9,"created_at":"2024-03-11T17:50:16.129235+08:00","updated_at":"202......