六大算法之动态规划_动态规划100题

六大算法之动态规划_动态规划100题在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直线需要同时满足满足:nums1[i] == nums2[j]且绘制的直线不与任何其他连线(非水平线)相交。请注意,连线即使在端点也不能相交:每个数字只能属于一条连线。以这种方法绘制线条,并返回可以绘制的最大连线数。示例 1:输入:nums1 = [1,4,2], nums2 = [1,2,4]输出:2解释:可以画出两条不交叉的

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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

提示:

1 <= nums1.length <= 500
1 <= nums2.length <= 500
1 <= nums1[i], nums2[i] <= 2000

动态规划

const int N = 2010;
const int M = 510;
int Hash[N];
int f[M][M] = { 
   0};
class Solution { 
   
public:
    int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) { 
   
        int n = nums1.size(),m = nums2.size();
        memset(Hash,0,sizeof Hash);
        for(int j = 1;j <= m;j ++){ 
   
            Hash[nums2[j - 1]] = j;
            for(int i = 1;i <= n;i ++){ 
   
                f[i][j] = f[i - 1][j];
                if(Hash[nums1[i - 1]] != 0){ 
   
                    f[i][j] = max(f[i][j],f[i - 1][Hash[nums1[i - 1]] - 1] + 1);
                }
            }
        }
        return f[n][m];
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169069.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月11日 下午6:46
下一篇 2022年8月11日 下午6:46


相关推荐

  • 微信Linux版本

    微信Linux版本git 托管地址 https github com geeeeeeeeek electronic wechat releases1 下载选择版本 点击下载 2 解压 nbsp nbsp tarzxvflinux x64 tar gz 3 运行 cd 到文件目录 nbsp nbsp nbsp electronic wechat4 就可以正常使用了

    2026年3月20日
    2
  • 遍历数组的12种方法

    遍历数组的12种方法第一种 普通 for 循环 for vari 0 i lt arr length i 代码 第二种 forEach 循环 arr forEach item index arr gt 代码 forEach 接收一个回调函数作为参数 而这个回调函数有接受三个参数 作为参数 item 是每

    2025年8月18日
    5
  • pageHelper分页失效解决方案

    pageHelper分页失效解决方案前言 pageHelper 是一款优秀的 Mybatis 分页插件 在项目中可以非常便利的使用 使开发效率得到很大的提升 但不支持一对多结果映射的分页查询 所以在平时的使用时 对于一对多分页会出现分页错误 这篇文章主要对 pageHelper 分页错误进行重现以及提出解决方案 mybatis 进行一对多查询时 映射文件 mapper xml 中的 sql 语句中使用的左连接 pageHelper 会自动对这条左连接 sql 语句进行 selectcount 0 的处理 并把结果作为分页结构的记录总数 然后自动将 lim

    2026年3月16日
    2
  • Facebook时序预测工具Prophet实战分析

    Facebook时序预测工具Prophet实战分析引言去年Facebook开源了一套时序预测工具叫做Prophet。Prophet是一个预测时间序列数据的模型。它基于一个自加性模型,用来拟合年、周、季节以及假期等非线性趋势。它在至少有一年历史数据的日常周期性数据,效果最好。Prophet对缺失值,趋势的转变和大量的异常值是有极强的鲁棒性。Prophet中文翻译是:“先知”。名字还是挺贴切的。在看完本篇文章后,你将会知道:

    2022年6月29日
    31
  • 智能算法学习总结

    智能算法学习总结本科的时候学习了智能信息处理这门课程,所使用的教材是《计算智能》张军,詹志辉.计算智能[M].清华大学出版社,2009.11之前回忆了一下一些还有点记忆的算法,写了一点博客如下:1、神经网络的基础知识与简单分类编程https://blog.csdn.net/SweeNeil/article/details/865313842、模糊逻辑基本原理与编程https://…

    2022年6月22日
    24
  • 动态规划:最长上升子序列(二分算法 nlogn)「建议收藏」

    动态规划:最长上升子序列(二分算法 nlogn)「建议收藏」解题心得:1、在数据量比较大的时候n^2会明显超时,所以可以使用nlogn的算法,此算法少了双重循环,用的lower_bound(二分法)。2、lis中的数字并没有意义,仅仅是找到最小点lis[0]和最大点lis[len],其中,在大于lis[len]时len++,在小于lis[len]时可以将arr[i]在lis中的数进行替换掉。所以此算法主要是在不停的找最合适的起点和最合适的终点。

    2022年6月11日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号