646.Maximum Length of Pair Chain
题目描述:You are given
n
pairs of numbers. In every pair, the first number is always smaller than the second number.Now, we define a pair
(c, d)
can follow another pair(a, b)
if and only ifb < c
. Chain of pairs can be formed in this fashion.Given a set of pairs, find the length longest chain which can be formed. You needn’t use up all the given pairs. You can select pairs in any order.
Example 1:
Input: [[1,2], [2,3], [3,4]] Output: 2 Explanation: The longest chain is [1,2] -> [3,4]
题目大意:给定一组pair,找到最长的pair链
思路:DP,dp[i]表示到当前pair最长的链(chain)
代码
package DP; import java.util.Arrays; import java.util.Comparator; /** * @Author OovEver * @Date 2017/12/17 16:41 */ public class LeetCode646 { public static int findLongestChain(int[][] pairs) { Arrays.sort(pairs, new Comparator<int[]>() { @Override public int compare(int[] o1, int[] o2) { return o1[0]-o2[0]; } }); int[] dp = new int[pairs.length]; Arrays.fill(dp, 1); for(int i=0;i<pairs.length;i++) { for(int j=0;j<i;j++) { dp[i] = Math.max(pairs[i][0] > pairs[j][1] ? dp[j] + 1 : dp[j], dp[i]); } } return dp[pairs.length-1]; } }