LeetCode 646 最长数对链[贪心 自定义排序] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 646 最长数对链[贪心 自定义排序] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。


解题思路:
从逆向思维角度出发,最后的最长数对链的第二个数一定是顺序排列的(当然第一个数也是顺序排列的),那么我们只需要按照第二个数的大小从小到大排序即可,这种情况可以保证第一个数绝对是最大贪心序列的第一个数,然后从中找子集,代码如下:

bool cmp(vector<int>& p1, vector<int>& p2) 
    return p1[1] < p2[1];


class Solution 
public:
    int findLongestChain(vector<vector<int>>& pairs) 
        int n = pairs.size();
        sort(pairs.begin(), pairs.end(), cmp);
        int res = 1, temp = pairs[0][1];
        for(int i = 1; i < n; i ++) 
            if(pairs[i][0] > temp) 
                res ++;
                temp = pairs[i][1];
            
        
        return res;
    
;

以上是关于LeetCode 646 最长数对链[贪心 自定义排序] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

646. 最长数对链(LIS&贪心)

646. 最长数对链(LIS&贪心)

LeetCode题目记录-646. 最长数对链(C++代码实现)

LeetCode 0646. 最长数对链

每日一题646. 最长数对链

646. 最长数对链