当前位置: 首页 > news >正文

力扣题解(不相交的线)

1035. 不相交的线

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

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

  •  nums1[i] == nums2[j]
  • 且绘制的直线不与任何其他连线(非水平线)相交。

请注意,连线即使在端点也不能相交:每个数字只能属于一条连线。

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

思路:

规定dp[i][j]是nums1从0到i,nums2从0到j的最大连线数,则主要研究i和j位置元素的值。

若nums1[i]==nums2[j],则可以视为dp[i-1][j-1]加一,即在没有i,j时的最长长度再加一。

当nums1[i]!=nums2[j],则此时dp的构成有两种,一种是dp[i-1][j],一种是dp[i][j-1],即在舍弃i或j位置后的最大长度就是dp[i][j]的值。之所以只需要这两个dp就行,是因为dp本身规定是存放从(0-k)位置的值,因此dp[i-1][j]和dp[i][j-1]一定可以涵盖所有不包含i,j其中一个元素的最长长度。

而无需要考虑其他的dp。

由于求的是长度,因此初始dp为0即可。

class Solution {
public:int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {int n1 = nums1.size();int n2 = nums2.size();vector<vector<int>>dp(n1, vector<int>(n2, 0));for (int i = 0; i <n1; i++){for (int j = 0; j < n2; j++){if(nums1[i]==nums2[j]){if(i==0||j==0)dp[i][j]=1;elsedp[i][j]=dp[i-1][j-1]+1;}else{int k1=0;if(i>0)k1=dp[i-1][j];int k2=0;if(j>0)k2=dp[i][j-1];dp[i][j]=max(k1,k2);}}}return dp[n1-1][n2-1];}
};

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Hive中的数据类型和存储格式总结
  • 对接企业微信API自建应用配置企业可信IP
  • [k8s源码]1.client-go集群外部署
  • 函数传值面试题
  • 【postgresql】视图(View)
  • ref 和 reactive 区别
  • Apache Lucene 详解及示例
  • 深入了解MySQL中的innodb_lock_wait_timeout
  • mybatis语法进阶1
  • MySQL数字相关数据处理函数
  • 6-7 宠物领养开发及相关代码
  • Flowable(一个开源的工作流和业务流程管理引擎)中与事件相关的一些核心概念
  • 老年生活照护实训室:让养老护理更个性化
  • vue解决页面放大图片模糊的问题
  • protobuf repeated C++怎样赋值?
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • MySQL QA
  • Spring Boot快速入门(一):Hello Spring Boot
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 闭包--闭包作用之保存(一)
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 简单数学运算程序(不定期更新)
  • 设计模式(12)迭代器模式(讲解+应用)
  • 使用Swoole加速Laravel(正式环境中)
  • 终端用户监控:真实用户监控还是模拟监控?
  • 通过调用文摘列表API获取文摘
  • 移动端高清、多屏适配方案
  • (day 12)JavaScript学习笔记(数组3)
  • (剑指Offer)面试题34:丑数
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (四)JPA - JQPL 实现增删改查
  • (原创)可支持最大高度的NestedScrollView
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)大道至简,职场上做人做事做管理
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .net core + vue 搭建前后端分离的框架
  • .NET Core 2.1路线图
  • .NET Core中的去虚
  • .Net 代码性能 - (1)
  • .net知识和学习方法系列(二十一)CLR-枚举
  • @TableLogic注解说明,以及对增删改查的影响
  • [Bug]使用gradio创建应用提示AttributeError: module ‘gradio‘ has no attribute ‘inputs‘
  • [C#]使用C#部署yolov8的目标检测tensorrt模型
  • [C++][opencv]基于opencv实现photoshop算法色阶调整
  • [CF]Codeforces Round #551 (Div. 2)
  • [CTO札记]盛大文学公司名称对联
  • [java] 23种设计模式之责任链模式
  • [leetcode]beautiful-arrangement. 优美的排列
  • [LeetCode]—Longest Palindromic Substring 最长回文子串
  • [LeetCode系列]子集枚举问题[无重复元素]
  • [MRCTF2020]Ez_bypass1
  • [Mysql-视图和存储过程]