整理leetcode中”最长...“

news2025/1/10 12:06:09

1.最长公共子序列(动态规划)剑指offer95

输入:text1 = “abcde”, text2 = “ace”
输出:3
解释:最长公共子序列是 “ace” ,它的长度为 3 。
Q1:为什么想到二维dp?
A1:因为涉及到两个字符串的比较,通常我们的做法都是设置两个指针进行遍历操作;而两个指针当前走到哪以及当前已经记录的公共子序列长度,我们可以采取一个二维dp记录
在这里插入图片描述
假设字符串text1和text2的长度分别为m,n,创建m+1行n+1列的二维数组dp,其中dp[i][j]表示text1[0:i]和text2[0:j]的最长公共子序列长度
//初始化dp数组
i=0;text1[0:i]为空,0<=j<=n,dp[0][j]=0;
j=0;text2[0:j]为空,0<=i<=m,dp[i][0]=0;

class Solution {
public:
    int longestCommonSubsequence(string text1, string text2) {
        int m=text1.size();int n=text2.size();
        假设字符串text1和text2的长度分别为m,n,创建m+1行n+1列的二维数组dp,
        ///其中dp[i][j]表示text1[0:i]和text2[0:j]的最长公共子序列长度
//初始化dp数组
//i=0;text1[0:i]为空,0<=j<=n,dp[0][j]=0;
//j=0;text2[0:j]为空,0<=i<=m,dp[i][0]=0;
        vector<vector<int>>dp(m+1,vector<int>(n+1));
        for(int i=1;i<=m;i++)
        {
            for(int j=1;j<=n;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]);}
            }
        }
        return dp[m][n];
    }
};

2.最长递增子序列(动态规划)leetcode300

输入:nums = [10,9,2,5,3,7,101,18]
输出:4
解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。
定义dp[i]为考虑前i个元素,以第i个数字结尾的最长上升子序列的长度,注意nums[i]必须被选取
假设已经得到dp[0…i-1]的值 状态转移方程为:
dp[i]=max(dp[j])+1 (0<=j<i && nums[j]<nums[i])
最后,整个数组的最长上升子序列即所有 dp[i]中的最大值

class Solution {
public:
    int lengthOfLIS(vector<int>& nums) 
    {
        if(nums.size()<2)return nums.size();
        vector<int>dp(nums.size(),1); //dp[i]代表截至到nums[i]最长的递增序列长度
        for(int i=1;i<nums.size();i++)
        {
            for(int j=0;j<i;j++)
            {
                if(nums[i]>nums[j])
                dp[i]=max(dp[j]+1,dp[i]);
            }
            //cout<<dp[i]<<endl;
        }
        return *max_element(dp.begin(),dp.end());

    }
};

3.最长连续序列(动规,unordered_set)剑指offer119

输入:nums = [100,4,200,1,3,2]
输出:4
解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。
输入:nums = [0,3,7,2,5,8,4,6,0,1]
输出:9

方法一:unordered_set

class Solution {
public:
    int longestConsecutive(vector<int>& nums) {
        unordered_set<int>s1;
        for (int num : nums)
        {
            s1.insert(num);
        }
        int res=0;
        for (int num : s1)
        {
            int cur=num;
            int length=1;//初始化的位置
            if(!s1.count(num-1))
            {
                while(s1.count(cur+1))
                {
                    cur++;
                    length++;
                }
            }
             res=max(res,length);
        }
        return res;
    }
};

方法二:动态规划

class Solution
{
public:
    int longestConsecutive(vector<int>&nums)
    {
        unordered_map<int,int>m1;//key-num  value-对应连续长度
        int res=0;
        for(int num:nums)
        {
            if(!m1[num])  
            {
                int left=m1[num-1];
                int right=m1[num+1];
                int length=left+right+1;
                //cout<<length<<endl;
                res=max(res,length);
                //更新左右两个端点的值
                m1[num]=length;
                m1[num-left]=length;  //num-left意味着从num移动到连续序列的左端点
                m1[num+right]=length; //num+right意味着从num移动到连续序列的右端点
            }
        }

4.最长回文子串()leetcode5

5.最长回文串()leetcode409

6.最长回文子序列()leetcode516

7.最长特殊序列I(脑筋急转弯)leetcode521

8.最长特殊序列II(脑筋急转弯)leetcode522

9.最长连续递增序列 (滑动窗口)leetcode674

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/118485.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JDBC第二章 (JDBC API详解)

目录 一、下载驱动包 二、加载与注册驱动 1、使用driverManager类 2、方式&#xff1a; 3、补充&#xff1a; 三、建立连接 1、URL 2.建立连接的方式 3.事务管理 4.获取Statement语句 1、普通版本 2、防止SQL注入版本 3、获取存储过程 四、Statement 1、概述 2…

数图互通高校房产管理——房屋模拟分配建设

数图互通房产管理系统在这方面做得比较全面&#xff1b; 1、 房屋模拟分配建设方案 实现对学校房屋分配进行情景模拟&#xff0c;在特定房屋类型、数量、使用面积等情况下&#xff0c;建立多个模拟分配方案&#xff0c;并对每个模拟分配方案生成明细清单。 1.1 房屋模拟分配清…

石墨烯太阳能供暖远程监控

石墨烯太阳能供暖系统是指采用全新一代石墨烯碳纤维电热膜为发热体&#xff0c;直接将电能转换为热能的供暖系统。再搭配太阳能光伏发电系统给石墨烯供暖系统供电&#xff0c;更加节能有效地解决用户用电问题。但目前这种供暖方式也存在诸多问题&#xff0c;如供暖温度得不到控…

深度学习交通标志识别项目

主要内容 在本文中&#xff0c;使用Python编程语言和库Keras和OpenCV建立CNN模型&#xff0c;成功地对交通标志分类器进行分类&#xff0c;准确率达96%。开发了一款交通标志识别应用程序&#xff0c;该应用程序具有图片识别和网络摄像头实时识别两种工作方式。 写作目的 近年…

jenkins 升级遇到问题总结

当我在使用jenkins的时候,避免不了下载很多插件,因为jenkins本身不提供很多功能,大部分的功能都是依赖插件来完成的,这也使jenkins更具有扩展性,但是,我在安装完成后打开插件列表居然是这样的。。。 或者插件列表打开的正常,但是安装某个插件时报这样的错误。。。 看标…

c++算法基础必刷题目——尺取法

文章目录尺取法1、字符串2、丢手绢尺取法 尺取法通常也叫滑动窗口法&#xff0c;顾名思义&#xff0c;像尺子一样取一段&#xff0c;借用挑战书上面的话说&#xff0c;尺取法通常是对数组保存一对下标&#xff0c;即所选取的区间的左右端点&#xff0c;然后根据实际情况不断地推…

Html网页和C++ App通信 - qwebchannel

Qt5 引入了 Qt WebChannel 的概念。这是为了在不能影响各端代码执行的前提下实现 Qt 端于 client 端的无缝 双向 通信。 QWebChannel 提供了在 C应用和 前端&#xff08;HTML/JS&#xff09;之间点对点的通信能力。通过向 前端的 QWebChannel 发布 QObject 的 派生对象&#xf…

开源版支持工作台展示,新增超级管理员用户组,MeterSphere开源持续测试平台v2.5.0发布

2022年12月27日&#xff0c;MeterSphere一站式开源持续测试平台正式发布v2.5.0版本。 在这一版本中&#xff0c;MeterSphere在工作台模块进行了UX交互升级&#xff0c;并将工作台模块由X-Pack增强功能开放为开源版功能。 在测试跟踪模块中&#xff0c;关联测试用例支持关联UI…

(四)RequestResponse

一、Request 和 Response 的概述 Request是请求对象&#xff0c;Response是响应对象。request&#xff1a;获取请求数据 &#xff08;1&#xff09;浏览器会发送HTTP请求到后台服务器 [Tomcat] &#xff08;2&#xff09;HTTP的请求中会包含很多请求数据[请求行请求头请求体] &…

26位前谷歌AI专家出走创业

细数近几年来高科技对现代社会的影响&#xff0c;人工智能&#xff08;AI&#xff09;无疑是排在前列。AI已经对人类社会行为、健康、教育和娱乐的方方面面都产生了巨大冲击。作为高科技的头部企业&#xff0c;谷歌的AI团队可能是AI行业最有影响的团队之一&#xff0c;他们的一…

第十三讲:MSTP技术应用

学校因为教师的人数越来越多&#xff0c;部门逐渐也增多&#xff0c;各部门之间都已经采用了vlan技术&#xff0c;但为了实现公司的稳定性和消除内部网络的环路&#xff0c;管理员小赵配合飞越公司去实现学校内部网络时刻不间断&#xff0c;来保证公司网络的运行。 为了解决校园…

【Lilishop商城】No4-3.业务逻辑的代码开发,涉及到:会员B端第三方登录的开发-微信小程序登录接口开发

仅涉及后端&#xff0c;全部目录看顶部专栏&#xff0c;代码、文档、接口路径在&#xff1a; 【Lilishop商城】记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客 全篇会结合业务介绍重点设计逻辑&#xff0c;其中重点包括接口类、业务类&#xff0c;具体的结合源代码…

工厂明火烟雾视频监控识别 烟火自动识别预警 yolo

工厂明火烟雾视频监控识别 烟火自动识别预警通过pythonyolo网络深度学习模型可以自动识别监控区域内的烟火&#xff0c;如pythonyolo网络深度学习模型发现火焰烟火可以立即抓拍告警。Python是一种由Guido van Rossum开发的通用编程语言&#xff0c;它很快就变得非常流行&#x…

Flink系列-2、Flink架构体系

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 大数据系列文章目录 官方网址&#xff1a;https://flink.apache.org/ 学习资料&#xff1a;https://flink-learning.org.cn/ 目录Flink中的重要…

[ web基础知识点 ] 解决端口被占用的问题(关闭连接)(杀死进程)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

什么是文件描述符

Linux内核在各种不同的文件系统格式之上做了一个抽象层&#xff0c;使得文件、目录、读写访问等概念成为抽象层的概念&#xff0c;因此各种文件系统看起来用起来都一样&#xff0c;这个抽象层称为虚拟文件系统(VFS&#xff0c;Virtual Filesystem)。 内核数据结构 Linux内核的V…

【endnote学习】解决为什么文献引用后出现年/月/日格式(endnote对其他类型引用文件的不兼容导致)

为什么文献引用后出现年/月/日格式问题描述问题解决问题描述 在一次文献引用中发现&#xff0c;引用后的文献格式里面多了年/月/日格式&#xff0c;比如选择AIChE格式时&#xff0c;出现&#xff1a; Liu P, Nrskov JK. Kinetics of the Anode Processes in PEM Fuel Cells …

编译原理——基本块、流图、基本块优化、循环优化(代码优化)

一、划分基本块、画流图 找基本块的入口&#xff1a;一共有三类入口&#xff1a;①代码段的第一个指令&#xff1b;②条件跳转和无条件跳转的目标语句&#xff1b;③条件跳转语句的下一条语句&#xff1b;根据划分的入口画流图&#xff0c;一个基本块的区间&#xff1a;从入口…

C++: STL : 容器:set/multi set,map/multimap

一&#xff1a;set容器 1.1: set容器的构造和赋值 简介&#xff1a;所有元素都会在插入时自动被排序 本质&#xff1a;set/multiset 属于关联式容器 &#xff0c;底层结构是二叉树实现 set与multiset区别&#xff1a; set: 不 允许容器中有重复元素 multiset &#xff1a;允…

Shader Graph(一)基本使用

一、如何使用Shader Graph 1.1 新建项目 通过创建URP或HDRP模板项目&#xff0c;可以自动配置好Shader Graph。 1.2 已有项目 在「Package Manager」中安装「Shader Graph」及URP或HDRP组件。然后在弹出的渲染管线向导面板中点击「Fix All」即可。如果项目中存在已经创建好…