【排序+贪心】贪心的规则就是对于前面一个数对,他的结尾越小越有利于我们扩展更长的链,因此可以对所有数对根据第二个数字排序,贪心即可。
class Solution {
// 排序 + 贪心
// 8:17 3
public int findLongestChain(int[][] pairs) {
Arrays.sort(pairs, (a, b) -> a[1] - b[1]);
int ans = 0, pre = -(int)1e9;
for (var p: pairs) {
if (p[0] > pre) {
ans++;
pre = p[1];
}
}
return ans;
}
}
class Solution {
public:
// 排序+贪心
// 8:30 10
int findLongestChain(vector<vector<int>>& pairs) {
sort(pairs.begin(), pairs.end(), [](vector<int>& a, vector<int>& b) {return a[1] < b[1];});
int ans = 0, pre = -(int)1e9;
for (auto p: pairs) {
if (p[0] > pre) {
pre = p[1];
ans++;
}
}
return ans;
}
};