首页 > 其他分享 >1035. 不相交的线

1035. 不相交的线

时间:2023-06-06 14:57:56浏览次数:31  
标签:直线 int 相交 vector nums1 nums2 1035

在两条独立的水平线上按给定的顺序写下 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 的直线相交。

> 动态规划
直线不能相交,这就是说明在字符串A中 找到一个与字符串B相同的子序列,且这个子序列不能改变相对顺序,只要相对顺序不改变,链接相同数字的直线就不会相交。

拿示例一A = [1,4,2], B = [1,2,4]为例,相交情况如图:

其实也就是说A和B的最长公共子序列是[1,4],长度为2。 这个公共子序列指的是相对顺序不变(即数字4在字符串A中数字1的后面,那么数字4也应该在字符串B数字1的后面)

这么分析完之后,大家可以发现:本题说是求绘制的最大连线数,其实就是求两个字符串的最长公共子序列的长度!


class Solution {
public:
    int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {
        int len1 = nums1.size();
        int len2 = nums2.size();
        vector<vector<int>> dp(len1+1,vector<int>(len2+1,0));
        for(int i = 1;i <= len1;i++){
            for(int j = 1;j <= len2;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[len1][len2];
    }
};

标签:直线,int,相交,vector,nums1,nums2,1035
From: https://www.cnblogs.com/lihaoxiang/p/17460519.html

相关文章

  • 最大不相交区间
    #include<bits/stdc++.h>usingnamespacestd;constintN=1e5+10;intn;structRange{intl;intr;booloperator<(constRange&w)const{returnr<w.r;}}range[N];intmain(){intn;cin>>n;for(inti=0;i<......
  • #yyds干货盘点# LeetCode程序员面试金典:相交链表
    1.简述:给你两个单链表的头节点 headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回null。图示两个链表在节点c1开始相交:题目数据保证整个链式结构中不存在环。注意,函数返回结果后,链表必须保持其原始结构。自定义评测:评测系统的输入......
  • 单相桥式有源逆变电路,单相半波可控整流电路,单相桥式半控整流电路,单相桥式全控整流电路
    单相桥式有源逆变电路,单相半波可控整流电路,单相桥式半控整流电路,单相桥式全控整流电路,单相交流调压电路simulink仿真,还有相应说明图(触发角不同时和负载不同时的波形)。ID:4620671284785838......
  • 车载充电器 3.3KW 车载充电机OBC方案 方案:PFC两相交
    车载充电器3.3KW车载充电机OBC方案方案:PFC两相交错并联,Dc全桥LLC,28035控制,CAN通信。文件内容:原理图Pcb关键磁件参数源代码实用范围:项目参考借鉴学习,不具备量产功能。ID:16146684069616387......
  • fx3u模拟量温控PID程序 所需硬件可以看图,温度变送器,单相交流
    fx3u模拟量温控PID程序所需硬件可以看图,温度变送器,单相交流调压模块,3uplc+2AD+2DA模块。需要的朋友可以拿去试试,程序加教程,测试成功的程序。有朋友拿这套程序控制负压风机已经成功。相信其他模拟量pid也可以用。ID:2515598766140762......
  • 「TJOI2018」智力竞赛(二分+DAG最小可相交路径覆盖)
    https://loj.ac/problem/2574这个题目描述扎心了。简要题意:用n+1条可以相交的路径去覆盖DAG,使得没被覆盖的点的权值的最小值最大。首先二分答案,问题转换为有一些点一定要被覆盖,问n+1条路径内有没有解。这个可以暴力费用流,每个点拆成两个点,\(i->i',r=1\),如果这个点必选,则费用为inf,......
  • 两相交错并联LLC谐振变换器,均流和不均流方式都有,联系前请注明是否均流
    两相交错并联LLC谐振变换器,均流和不均流方式都有,联系前请注明是否均流模型均可实现输出电压闭环控制第二幅波形图模拟的效果为电容相差15%,均流效果良好仿真模型的运行环境是matlab/simulink~ID:8849675055162877......
  • 面试题 02.07(Java). 链表相交(简单)
    题目:本题与:力扣160相交链表一致给你两个单链表的头节点 headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回null。图示两个链表在节点c1开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构......
  • 链表相交
     题目:给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 需要注意的点:1、定义的两个指针在遍历完链表的长度后,要重新指向头结点2、让长、短链表的尾端对齐3、相交意味着指针相同 classSolution{p......
  • 【230422-2】在矩形ABCD中,E是CB延长线上的一个动点,FG分别为AE、BC的中点,FG与ED相交于
    ......