646.Maximum Length of Pair Chain

来源:互联网 发布:淘宝如何设置店铺分类 编辑:程序博客网 时间:2024/06/16 17:17

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 if b < 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: 2Explanation: 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];  }}
原创粉丝点击