【动态规划-最长公共子序列(LCS)】力扣1035. 不相交的线

news/2024/10/6 23:44:54 标签: 动态规划, leetcode, 算法

在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。

现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直线需要同时满足:

nums1[i] == nums2[j]
且绘制的直线不与任何其他连线(非水平线)相交。
请注意,连线即使在端点也不能相交:每个数字只能属于一条连线。

以这种方法绘制线条,并返回可以绘制的最大连线数。

示例 1:
在这里插入图片描述

输入:nums1 = [1,4,2], nums2 = [1,2,4]
输出:2
解释:可以画出两条不交叉的线,如上图所示。
但无法画出第三条不相交的直线,因为从 nums1[1]=4 到 nums2[2]=4 的直线将与从 nums1[2]=2 到 nums2[1]=2 的直线相交。

示例 2:
输入:nums1 = [2,5,1,2,5], nums2 = [10,5,2,1,5,2]
输出:3

示例 3:
输入:nums1 = [1,3,7,1,7,5], nums2 = [1,9,2,5,1]
输出:2

动态规划

class Solution {
public:
    int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {
        int m = nums1.size(), n = nums2.size();
        vector<vector<int>> f(m+1, vector<int>(n+1));
        for(int i = 1; i <= m; i++){
            for(int j = 1; j <= n; j++){
                if(nums1[i-1] == nums2[j-1]){
                    f[i][j] = f[i-1][j-1] + 1;
                }
                else
                {
                    f[i][j] = max(f[i-1][j], f[i][j-1]);
                }
            }
        }
        return f[m][n];
    }
};

这道题的本质就是求最长公共子序列,可以参考主页力扣1143的最长公共子序列模板题。


http://www.niftyadmin.cn/n/5692293.html

相关文章

爬虫prc技术----小红书爬取解决xs

知识星球&#xff1a;知识星球 | 深度连接铁杆粉丝&#xff0c;运营高品质社群&#xff0c;知识变现的工具知识星球是创作者连接铁杆粉丝&#xff0c;实现知识变现的工具。任何从事创作或艺术的人&#xff0c;例如艺术家、工匠、教师、学术研究、科普等&#xff0c;只要能获得一…

JavaEE: 数据链路层的奇妙世界

文章目录 数据链路层以太网源地址和目的地址类型数据认识 MTU 重要应用层协议 DNS 数据链路层 以太网 以太网的帧格式如下所示: 源地址和目的地址 源地址和目的地址是指网卡的硬件地址(也叫MAC地址). mac 地址和 IP 地址的区别: mac 地址使用6个字节表示,IP 地址4个字节表…

Linux防火墙-常用命令

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 我们经过上小章节讲了Linux的部分进阶命令&#xff0c;我们接下来一章节来讲讲Linux防火墙。由于目前以云服务器为主&#x…

尝试从 http://pypi.doubanio.com/simple 这个索引源安装 webdriver 时出现了问题

问题如下&#xff1a; WARNING: The repository located at pypi.doubanio.com is not a trusted or secure host and is being ignored. If this repository is available via HTTPS we recommend you use HTTPS instead, otherwise you may silence this warning and allow …

原码、反码、补码极简理解

原码、反码、补码 1、概述 计算机里都是以补码的形式存储数据&#xff0c;单纯给我们补码形式的数据&#xff0c;我们是不认识的&#xff0c;只有把补码转换成原码&#xff0c;我们才能知道这份数据的意思 2、基本介绍 原码&#xff1a;最高位为符号位&#xff0c;0 代表正数…

go+redis基于tcp实现聊天室

goredis实现聊天室 基于tcp连接通过redis实现了消息的广播&#xff0c;命令改名&#xff0c;查询在线人数&#xff0c;查询用户活跃度 serverclinet server 聊天室服务端的流程可以分为几个主要部分&#xff1a;初始化、监听连接、处理每个连接以及消息的处理和转发 1. 初…

python的可迭代对象包含哪些?

可迭代对象&#xff08;Iterable&#xff09;指的是那些能够一次返回一个元素的对象&#xff0c;这样就可以在 for 循环或者在其他需要迭代的上下文中使用。以下是一些常见的可迭代对象类型&#xff1a; 列表&#xff08;List&#xff09;&#xff1a;如 [a, b, c]。元组&…

SpringBoot框架下校园资料库的构建与优化

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…