【动态规划】最长数对链
问题描述
给出 n 个数对。 在每一个数对中,第一个数字总是比第二个数字小。
现在,我们定义一种跟随关系,当且仅当 b < c 时,数对 (c, d) 才可以跟在 (a, b) 后面。我们用这种形式来构造一个数对链。
给定一个对数集合,找出能够形成的最长数对链的长度。你不需要用到所有的数对,你可以以任何顺序选择其中的一些数对来构造。
示例 :
输入: [[1,2], [2,3], [3,4]]
输出: 2
解释: 最长的数对链是 [1,2] -> [3,4]
注意:
给出数对的个数在 [1, 1000] 范围内。
类似算法题:【动态规划】俄罗斯套娃信封问题
import java.util.Collections;
import java.util.Comparator;
import java.lang.Math;
import java.util.List;
import java.util.ArrayList;public class Solution{public int solution(int[][] data){if(null == data || data.length == 0){return 0;}List<List<Integer>> tmp = new ArrayList<List<Integer>>();for(int i = 0; i < data.length; i++){List<Integer> d = new ArrayList<Integer>();d.add(data[i][0]);d.add(data[i][1]);tmp.add(d);}Collections.sort(tmp, new Comparator<List<Integer>>(){public int compare(List<Integer> o1, List<Integer> o2){return o1.get(0) < o2.get(0) ? 1 : 0;}});int[] dp = new int[data.length];int max = 0;for(int i = 0; i < tmp.size(); i++){for(int j = i + 1; j < tmp.size(); j++){if(tmp.get(i).get(1) < tmp.get(j).get(0)){dp[j] = Math.max(dp[i] + 1, dp[j]);max = Math.max(max, dp[j]);}}}return max + 1;}
}
【动态规划】最长数对链相关推荐
- leetcode - 646. 最长数对链
646. 最长数对链 -------------------------------------------- 给出 n 个数对. 在每一个数对中,第一个数字总是比第二个数字小. 现在,我们定义一种跟 ...
- LeetCode 646. 最长数对链(区间 贪心)
1. 题目 给出 n 个数对. 在每一个数对中,第一个数字总是比第二个数字小. 现在,我们定义一种跟随关系,当且仅当 b < c 时,数对(c, d) 才可以跟在 (a, b) 后面.我们用这种 ...
- Java实现 LeetCode 646 最长数对链(暴力)
646. 最长数对链 给出 n 个数对. 在每一个数对中,第一个数字总是比第二个数字小. 现在,我们定义一种跟随关系,当且仅当 b < c 时,数对(c, d) 才可以跟在 (a, b) 后面. ...
- 646. 最长数对链
给出 n 个数对. 在每一个数对中,第一个数字总是比第二个数字小. 现在,我们定义一种跟随关系,当且仅当 b < c 时,数对(c, d) 才可以跟在 (a, b) 后面.我们用这种形式来构造一 ...
- leetcode算法题--最长数对链
原题链接:https://leetcode-cn.com/problems/maximum-length-of-pair-chain/ 1.动态规划 dp[i]表示第i个位置最长的数对链的长度 状态转 ...
- leetcode 646. Maximum Length of Pair Chain | 646. 最长数对链(暴力递归->傻缓存->dp)
题目 https://leetcode.com/problems/maximum-length-of-pair-chain/description/ 题解 暴力递归->傻缓存->dp 写完 ...
- LeetCode 646. 最长数对链
思路:贪心算法可行. public static int findLongestChain(int[][] pairs) {if(pairs.length < 2)return pairs.le ...
- [2022软工第三次作业]结对编程项目——最长英语单词链
项目 内容 本作业所属课程 2022年北航敏捷软件工程教学实践 本作业要求 结对编程项目-最长英语单词链 个人课程目标 学习到软件工程的方法论,了解整个过程,并进行亲自实践 本作业在哪个具体方面帮助我 ...
- 动态规划——最长上升子序列问题(LIS)
动态规划--最长上升子序列问题(LIS) 最长上升子序列问题(LIS).给定n个整数A1,A2,-,AnA_1, A_2, \dots , A_n,按从左到右的顺序选出尽量多的整数,组成一个上升子序列 ...
最新文章
- tomcat自动重启脚本
- 用c语言找出第123个素数,在C语言中查找第N个素数
- Android @id和@+id区别
- 【python数据挖掘课程】十五.Matplotlib调用imshow()函数绘制热图
- 使用root用户安装Hybris遇到的错误
- P6793-[SNOI2020]字符串【广义SAM,贪心】
- 【kafka】kafka 消息头的强大功能
- Linq 查询结果 可能遵循 2 º,2¹,2 ²,......增长计算
- 中国移动盘古搜索开创全新服务模式
- TV新媒体电商发展遇瓶颈
- InnoDB中的页合并与分裂
- 社群的发展阶段是怎么样的?
- 分布式技术原理与实战45讲--05 第05讲:共识问题:区块链如何确认记账权?
- 雅马哈四轴机器人调试笔记
- C++时间日期的处理ctime
- 如何在Win10日历便签中设置添加定时提醒和活动
- 华为机试java_华为java机试面试题目大全
- 生态学经典:捕食者和被捕食者模型
- 如何实现文件断点续传功能
- 可放在任意桌面位置的透明正计时/倒计时/语音报时/变颜色/变字体免费数字时钟
热门文章
- 神舟战神Z8-CU7NA折腾Windows10 + Manjaro双系统
- “行式存储”和“列式存储”的区别
- 目前最好用的云存储?
- 宏任务和微任务的区别
- html css做骰子,纯 CSS 制作摇骰子(随机结果)
- matlab 效度,如果某测验的效度系数为0.80,那么在实验中能够作出正确预测的比例是()...
- 配置gitlib推送代码自动触发jenkins部署方案
- ROS1云课→25机器人控制配置
- chrome解决http自动跳转https问题
- [博创智联]创新创客智能硬件平台入门教程目录