侧边栏壁纸
博主头像
GabrielxD

列車は必ず次の駅へ。では舞台は?私たちは?

  • 累计撰写 675 篇文章
  • 累计创建 128 个标签
  • 累计收到 26 条评论

目 录CONTENT

文章目录

【贪心, 排序】最长数对链

GabrielxD
2022-09-03 / 0 评论 / 0 点赞 / 278 阅读 / 270 字
温馨提示:
本文最后更新于 2022-09-08,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

题目

646. 最长数对链


给出 n 个数对。 在每一个数对中,第一个数字总是比第二个数字小。

现在,我们定义一种跟随关系,当且仅当 b < c 时,数对(c, d) 才可以跟在 (a, b) 后面。我们用这种形式来构造一个数对链。

给定一个数对集合,找出能够形成的最长数对链的长度。你不需要用到所有的数对,你可以以任何顺序选择其中的一些数对来构造。

示例:

输入:[[1,2], [2,3], [3,4]]
输出:2
解释:最长的数对链是 [1,2] -> [3,4]

提示:

  • 给出数对的个数在 [1, 1000] 范围内。

解题

方法一:

思路

代码

class Solution {
public:
    int findLongestChain(vector<vector<int>>& pairs) {
        sort(pairs.begin(), pairs.end(), [](auto& a, auto& b) { return a[1] < b[1]; });
        int prev = pairs[0][1], max_cnt = 1;
        for (int i = 1; i < pairs.size(); ++i) {
            if (pairs[i][0] > prev) {
                ++max_cnt;
                prev = pairs[i][1];
            }
        }
        return max_cnt;
    }
};
0

评论区