题意:给出一个pair数组,求最长pair链,连接规则题目讲的很清楚
思路与分析:这道题我是使用动态规则算法来做的,我是先对给出的pair排序,然后dp[i]记录以第i个pair结尾的链条长度,所以我在遍历的时候每次都遍历一次0~i-1的pair看是否有可以接在第i个pair前面的,有的话,dp[i]=dp[j]+1;
代码:
class Solution {
public:
int findLongestChain(vector<vector<int>>& pairs) {
sort(pairs.begin(), pairs.end());
vector<int> dp(pairs.size(), 1);
for (int i = 1; i < pairs.size(); i++) {
for (int j = 0; j < i; j++) {
if (pairs[j][1]<pairs[i][0] && dp[j] + 1>dp[i]) dp[i] = dp[j] + 1;
}
}
int result = dp[0];
for (int i = 0; i < dp.size(); i++) {
if (dp[i] > result) result = dp[i];
}
return result;
}
};