题目描述
题目思路
首先,这一题求的是最长数对链的长度,需要先对所有数对进行排序,按照每个数对的第一个数进行从小到大的排序,然后使用动态规划的方法:
- 状态–》dp[i]表示以数对i 结尾的最长数对链的长度
- 转移方程–》
dp[i] = max(1 + dp[j]) i < j 并且pairs[j][1] < pairs[i][0]
class Solution {
public int findLongestChain(int[][] pairs) {
Arrays.sort(pairs,(a,b)->(a[0] - b[0]));
int n = pairs.length;
int[] dp = new int[n];
Arrays.fill(dp,1);
for(int i = 1;i < n;i ++){
for(int j = 0;j < i;j ++){
if(pairs[j][1] < pairs[i][0]){
dp[i] = Math.max(dp[i], dp[j] + 1);
}
}
}
return dp[n - 1];
}
}