要求:[[1,2], [2,3], [3,4]],最长的数对链是 [1,2] -> [3,4]
思路:要先排序,然后跟最长递增子序列类似
class Solution {
public:
static bool cmp(vector<int>& a,vector<int>& b){
return a[0]!=b[0]?a[0]<b[0]:a[1]<b[1];
}
int findLongestChain(vector<vector<int>>& pairs) {
int n=pairs.size();
//dp表示以pairs[i]结尾的数对最长个数
sort(pairs.begin(),pairs.end(),cmp);
int dp[n];
int maxlen=1;
for(int i=0;i<n;++i){
dp[i]=1;
for(int j=0;j<i;++j)
if(pairs[j][1]<pairs[i][0])
dp[i]=max(dp[i],dp[j]+1);
maxlen=max(maxlen,dp[i]);
}
return maxlen;
}
};