646. Maximum Length of Pair Chain

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: 2
Explanation: The longest chain is [1,2] -> [3,4]





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);
    int max = 0;
    
    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);
        }
      }
      max = Math.max(dp[i], max);
    }
    return max;
  }
}





Notes: 


Sort first, and then dp 


// lambda function 

Arrays.sort(dogArray, new Comparator<Dog>(){
  @Override
  public int compare(Dog o1, Dog o2){
    return o1.getWeight() - o2.getWeight();
  }
});


Arrays.sort(dogArray, (m, n) -> m.getWeight() - n.getWeight());

 

posted on 2018-09-20 18:08  猪猪&#128055;  阅读(98)  评论(0)    收藏  举报

导航