题解 | 信封嵌套问题

信封嵌套问题

https://www.nowcoder.com/practice/9bf77b5b018d4d24951c9a7edb40408f

#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;
    }
};

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务