646. 最长数对链
题目描述给你一个由n nn个数对组成的数对数组p a i r s pairspairs其中p a i r s [ i ] [ l e f t , r i g h t ] pairs[i] [left, right]pairs[i][left,right]且l e f t r i g h t left rightleftright。现在我们定义一种 跟随 关系当且仅当b c b cbc时数对p 2 [ c , d ] p2 [c, d]p2[c,d]才可以跟在p 1 [ a , b ] p1 [a, b]p1[a,b]后面。我们用这种形式来构造 数对链 。找出并返回能够形成的 最长数对链的长度 。你不需要用到所有的数对你可以以任何顺序选择其中的一些数对来构造。示例 1输入pairs [[1,2], [2,3], [3,4]]输出2解释最长的数对链是 [1,2] - [3,4] 。示例 2输入pairs [[1,2],[7,8],[4,5]]输出3解释最长的数对链是 [1,2] - [4,5] - [7,8] 。算法原理之前做子序列问题的时候以i ii位置元素为结尾的子序列i ii位置元素一般都是接在0 00~i − 1 i-1i−1位置元素之后的不会接在i 1 i1i1~n − 1 n-1n−1位置元素之后。但是在这道题目中对于以i ii位置元素为结尾的数对链i ii位置数对会接在0 00~i − 1 i-1i−1位置数对之后也会接在i 1 i1i1~n − 1 n-1n−1位置数对之后。比如示例2 22以1 11位置数对为结尾的子序列1 11位置数对可能会接在0 00位置数对和2 22位置数对之后。所以要进行预处理预处理的方法很简单直接按照数对的第一个元素进行升序排序即可。假设排完序后第i ii个数对是[ a , b ] [a, b][a,b]第i 1 i 1i1个数对是[ c , d ] [c, d][c,d]。如果[ a , b ] [a, b][a,b]要接在[ c , d ] [c, d][c,d]之后一定要满足d a d ada。但是已经排序了所以c a c aca数对内部是升序得到d c d cdc所以d c a d c adca得到d a d ada第i ii个数对肯定不会接在第i 1 i1i1个数对之后预处理完使用动态规划解决问题动态规划的思路和 最长递增子序列 类似状态表示一般根据经验 题目要求得到。经验就是以某一个位置为结尾题目要求是最长数对链的长度。所以d p [ i ] dp[i]dp[i]表示以i ii位置为结尾的所有数对链中最长数对链的长度状态转移方程以i ii位置为结尾的数对链可以分为长度 1 11和长度 1 11的长度 1 11时数对链只有一个数对d p [ i ] 1 dp[i] 1dp[i]1长度 1 11时以i ii位置为结尾的数对链可以看成以i − 1 , i − 2 , . . . , 0 i-1, i-2, ..., 0i−1,i−2,...,0位置结尾的数对链 i ii位置数对。假设0 j i − 1 0 j i-10ji−1以i − 1 , i − 2 , . . . , 0 i-1, i-2, ..., 0i−1,i−2,...,0位置结尾的数对链它们分别最长的长度就是d p [ j ] dp[j]dp[j]i ii位置数对要想跟在这些数对链之后肯定要满足p a i r [ j ] [ 1 ] p a i r [ i ] [ 0 ] pair[j][1] pair[i][0]pair[j][1]pair[i][0]此时构成的新数对链的长度是d p [ j ] 1 dp[j] 1dp[j]1。由于要最大值所以d p [ i ] m a x ( d p [ j ] 1 , d p [ i ] ) dp[i] max(dp[j] 1, dp[i])dp[i]max(dp[j]1,dp[i])初始化以每一个位置为结尾的数对链长度至少为1 11所以初始化d p dpdp表为全1 11填表顺序从左到右返回值d p dpdp表中元素的最大值代码classSolution{public:intfindLongestChain(vectorvectorintpairs){sort(pairs.begin(),pairs.end(),[](vectorintv1,vectorintv2){returnv1[0]v2[0];});intnpairs.size();vectorintdp(n,1);intretdp[0];for(inti1;in;i){for(intji-1;j0;--j){if(pairs[i][0]pairs[j][1])dp[i]max(dp[j]1,dp[i]);}retmax(dp[i],ret);}returnret;}};

相关新闻

5.13华为OD机试真题 新系统 - 数据包优先级窗口查找  (JavaPyCC++JsGo)

5.13华为OD机试真题 新系统 - 数据包优先级窗口查找 (JavaPyCC++JsGo)

数据包优先级窗口查找 2026 华为OD机试真题 5月13日华为OD上机新系统考试真题 100 分题型 点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 双机位C卷 真题题库目录|全覆盖题库 逐点算法考点详解 题目描述 给定 n 个数据包&#xff0c…

2026/7/24 2:33:11 阅读更多 →
YOLO26与ACmix注意力机制融合优化目标检测

YOLO26与ACmix注意力机制融合优化目标检测

1. YOLO26与注意力机制融合的背景与价值目标检测领域近年来最显著的突破之一,就是注意力机制与卷积神经网络的深度融合。作为YOLO系列的最新迭代,YOLO26在保持实时检测优势的同时,通过引入ACmix这类混合注意力模块,实现了特征提取…

2026/7/24 2:33:11 阅读更多 →
5.10华为OD机试真题 新系统 - 美观的灯笼  (JavaPyCC++JsGo)

5.10华为OD机试真题 新系统 - 美观的灯笼 (JavaPyCC++JsGo)

美观的灯笼 2026 华为OD机试真题 5月10日华为OD上机新系统考试真题 100 分题型 点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 双机位C卷 真题题库目录|全覆盖题库 逐点算法考点详解 题目描述 春节将至,工人要在古镇老街…

2026/7/24 2:33:11 阅读更多 →

最新新闻

Hale语言:专为高并发系统设计的编程语言解析与实践

Hale语言:专为高并发系统设计的编程语言解析与实践

1. 先搞清楚 Hale 到底解决什么并发系统问题Hale 这个语言最值得关注的点不是“又一个新语言”,而是它专门瞄准了并发系统这个硬骨头。如果你写过需要处理高并发、多线程、分布式任务的应用,肯定遇到过数据竞争、死锁、调试困难这些头疼问题。Hale 想解决…

2026/7/24 2:40:13 阅读更多 →
服装店客流一直上不去?五个被忽略了的核心经营环节

服装店客流一直上不去?五个被忽略了的核心经营环节

服装店生意好不好,表面看是“人少”,背后其实是经营动作有没有做到位。我观察过不少门店,发现一个普遍现象:老板以为引流就是发传单、做活动,结果跟风搞了几轮,客流也就热闹三五天,过后又恢复冷…

2026/7/24 2:40:13 阅读更多 →
全国景点查询-旅游景区查询-旅游景点搜索API接口介绍

全国景点查询-旅游景区查询-旅游景点搜索API接口介绍

前言 查询全国各地的旅游景点,覆盖面广。为旅游出行规划提供数据支撑。 API介绍 全国景点查询包括四个API,分别为:景点查询、省份列表、城市列表、区县列表。 戳这里查看详情 景点查询 根据省、市、县名称及景点名称查询景点信息&…

2026/7/24 2:40:13 阅读更多 →
FlashRT:多模态AI实时流处理框架的原理与实践指南

FlashRT:多模态AI实时流处理框架的原理与实践指南

1. 先搞清楚 FlashRT 到底解决什么实际问题如果你正在尝试把多模态 AI 应用(比如视频理解、语音交互、图文生成)部署到实时场景,FlashRT 这个工具链值得先看两眼。它不是又一个“全能框架”,而是专门解决一个具体痛点:…

2026/7/24 2:40:13 阅读更多 →
AI如何驱动男装市场增长与消费趋势预测

AI如何驱动男装市场增长与消费趋势预测

1. 男装市场增长背后的数据逻辑过去三年全球男装市场规模以4.7%的年均复合增长率稳步攀升,这个看似平淡的数字背后隐藏着消费行为的结构性变化。我通过服装产业数据库追踪发现,25-35岁男性客群的消费频次提升了28%,而客单价却下降了15%——这…

2026/7/24 2:40:13 阅读更多 →
mac python ide oracle Mac上装Oracle配Python?JDK 27/28更新再快也救不了你的IDE卡成狗

mac python ide oracle Mac上装Oracle配Python?JDK 27/28更新再快也救不了你的IDE卡成狗

JDK 27 的早期访问构建 28 被发布, 它属于 Build 27 的升级版本, 且修复了各类问题, 若要知晓关于此构建的更多细致情况, 需参阅发布说明。JDK 28 的早期访问构建的 Build 4 发布了, 它属于 Build 3 的升级版本, 修复了各类问题, 若要知晓关于这个构建的更多详细情形, 请查阅发…

2026/7/24 2:39:13 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻