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/10/22 7:25:21 阅读更多 →
YOLO26与ACmix注意力机制融合优化目标检测

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

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

2026/10/22 8:25:54 阅读更多 →
5.10华为OD机试真题 新系统 - 美观的灯笼  (JavaPyCC++JsGo)

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

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

2026/10/19 12:30:13 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/21 9:32:40 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/21 9:32:40 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/22 9:44:47 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/21 9:32:40 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/21 9:32:40 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/21 9:31:32 阅读更多 →

日新闻

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/22 1:47:45 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/21 21:32:28 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/22 5:12:39 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 21:50:56 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 21:51:55 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 16:24:48 阅读更多 →