Maximum Length of Pair Chain
You are givenn
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
Input:
[[1,2], [2,3], [3,4]]
Output:
2
Explanation:
The longest chain is [1,2] -> [3,4]
Note
类似Non-overlapping,这里的重合条件是小于等于,每有一个满足条件就将它从原长度中删去。
Code
class Solution {
public int findLongestChain(int[][] pairs) {
Arrays.sort(pairs, (a, b) -> a[0] - b[0]);
int res = pairs.length;
int last = 0;
for (int i = 1; i < pairs.length; i++) {
if (pairs[i][0] <= pairs[last][1]) {
res--;
if (pairs[i][1] <= pairs[last][1]) {
last = i;
}
} else {
last = i;
}
}
return res;
}
}
Last updated