#include <vector> class Solution { public: /** 将数组从小到进行排列,前面的长度一定小于等于后面的长度,从前往后更新长度即可,继承最长的可继承长度 */ int maxLetters(vector<vector<int> >& letters) { sort(letters.begin(), letters.end(), []( vector<int>& a, vector<int>& b) { //传入数组里的元素进行比较 if (a[0] == b[0])return a[1] > b[1]; return a[0] < b[0]; }); vector<int> dp(letters.size(), 1); int maxlen = 1; for(int i=1; i<letters.size(); i++){ for(int j=0; j<i; j++){ if(letters[i][0] > letters[j][0] && letters[i][1] > letters[j][1]) { dp[i] = max(dp[i], dp[j]+1); maxlen = max(maxlen, dp[i]); } } } return maxlen; } };