贪心:
先按照第二位置的最小值进行排序,如果第二个位置相同,那么选择第一个位置最小的值排序
1. 优先选择第一个元素作为链的第一个元素
2. 选择比上一个结束位置更大的起始位置,则进入下一个选择,令结束位置为当前结束位置
class Solution {
public:
/*先按照第二位置的最小值进行排序,如果第二个位置相同,那么选择第一个位置最小的值排序
1. 优先选择第一个元素作为链的第一个元素
2. 选择比上一个结束位置更大的起始位置,则进入下一个选择,令结束位置为当前结束位置*/
int findLongestChain(vector<vector<int>>& pairs) {
// 排序
sort(pairs.begin(),pairs.end(),[](vector<int> &v1,vector<int> &v2)->bool{
if(v1[1]<v2[1]){
return true;
}else if(v1[1] == v2[1]){
return v1[0]<v2[0];
}else{
return false;
}
});
int end = pairs[0][1];
int count = 1;
for(int i=1;i<pairs.size();i++){
if(pairs[i][0]>end){
end = pairs[i][1];
count++;
}
}
return count;
}
};