问题描述

给出 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;}
}

【动态规划】最长数对链相关推荐

  1. leetcode - 646. 最长数对链

    646. 最长数对链 -------------------------------------------- 给出 n 个数对. 在每一个数对中,第一个数字总是比第二个数字小. 现在,我们定义一种跟 ...

  2. LeetCode 646. 最长数对链(区间 贪心)

    1. 题目 给出 n 个数对. 在每一个数对中,第一个数字总是比第二个数字小. 现在,我们定义一种跟随关系,当且仅当 b < c 时,数对(c, d) 才可以跟在 (a, b) 后面.我们用这种 ...

  3. Java实现 LeetCode 646 最长数对链(暴力)

    646. 最长数对链 给出 n 个数对. 在每一个数对中,第一个数字总是比第二个数字小. 现在,我们定义一种跟随关系,当且仅当 b < c 时,数对(c, d) 才可以跟在 (a, b) 后面. ...

  4. 646. 最长数对链

    给出 n 个数对. 在每一个数对中,第一个数字总是比第二个数字小. 现在,我们定义一种跟随关系,当且仅当 b < c 时,数对(c, d) 才可以跟在 (a, b) 后面.我们用这种形式来构造一 ...

  5. leetcode算法题--最长数对链

    原题链接:https://leetcode-cn.com/problems/maximum-length-of-pair-chain/ 1.动态规划 dp[i]表示第i个位置最长的数对链的长度 状态转 ...

  6. leetcode 646. Maximum Length of Pair Chain | 646. 最长数对链(暴力递归->傻缓存->dp)

    题目 https://leetcode.com/problems/maximum-length-of-pair-chain/description/ 题解 暴力递归->傻缓存->dp 写完 ...

  7. LeetCode 646. 最长数对链

    思路:贪心算法可行. public static int findLongestChain(int[][] pairs) {if(pairs.length < 2)return pairs.le ...

  8. [2022软工第三次作业]结对编程项目——最长英语单词链

    项目 内容 本作业所属课程 2022年北航敏捷软件工程教学实践 本作业要求 结对编程项目-最长英语单词链 个人课程目标 学习到软件工程的方法论,了解整个过程,并进行亲自实践 本作业在哪个具体方面帮助我 ...

  9. 动态规划——最长上升子序列问题(LIS)

    动态规划--最长上升子序列问题(LIS) 最长上升子序列问题(LIS).给定n个整数A1,A2,-,AnA_1, A_2, \dots , A_n,按从左到右的顺序选出尽量多的整数,组成一个上升子序列 ...

最新文章

  1. tomcat自动重启脚本
  2. 用c语言找出第123个素数,在C语言中查找第N个素数
  3. Android @id和@+id区别
  4. 【python数据挖掘课程】十五.Matplotlib调用imshow()函数绘制热图
  5. 使用root用户安装Hybris遇到的错误
  6. P6793-[SNOI2020]字符串【广义SAM,贪心】
  7. 【kafka】kafka 消息头的强大功能
  8. Linq 查询结果 可能遵循 2 º,2¹,2 ²,......增长计算
  9. 中国移动盘古搜索开创全新服务模式
  10. TV新媒体电商发展遇瓶颈
  11. InnoDB中的页合并与分裂
  12. 社群的发展阶段是怎么样的?
  13. 分布式技术原理与实战45讲--05 第05讲:共识问题:区块链如何确认记账权?
  14. 雅马哈四轴机器人调试笔记
  15. C++时间日期的处理ctime
  16. 如何在Win10日历便签中设置添加定时提醒和活动
  17. 华为机试java_华为java机试面试题目大全
  18. 生态学经典:捕食者和被捕食者模型
  19. 如何实现文件断点续传功能
  20. 可放在任意桌面位置的透明正计时/倒计时/语音报时/变颜色/变字体免费数字时钟

热门文章

  1. 神舟战神Z8-CU7NA折腾Windows10 + Manjaro双系统
  2. “行式存储”和“列式存储”的区别
  3. 目前最好用的云存储?
  4. 宏任务和微任务的区别
  5. html css做骰子,纯 CSS 制作摇骰子(随机结果)
  6. matlab 效度,如果某测验的效度系数为0.80,那么在实验中能够作出正确预测的比例是()...
  7. 配置gitlib推送代码自动触发jenkins部署方案
  8. ROS1云课→25机器人控制配置
  9. chrome解决http自动跳转https问题
  10. [博创智联]创新创客智能硬件平台入门教程目录