当前位置: 首页 > news >正文

Day27.

leetcode 646.最长数对链

给你一个由 n 个数对组成的数对数组 pairs ,其中 pairs[i] = [lefti, righti]lefti < righti

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

找出并返回能够形成的 最长数对链的长度

你不需要用到所有的数对,你可以以任何顺序选择其中的一些数对来构造。

示例 1:

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

示例 2:

输入:pairs = [[1,2],[7,8],[4,5]]
输出:3
解释:最长的数对链是 [1,2] -> [4,5] -> [7,8] 。

贪心算法:

挑选最长数对链的第一个数对时,最优的选择是挑选第二个数最小的数对,以此类推。

代码:

class Solution {
public:
    int findLongestChain(vector<vector<int>>& pairs) {
          sort(pairs.begin(), pairs.end(), [](const vector<int>& a, const vector<int>& b) {
            return a[1] < b[1];
        });

        int count = 1;
        int end = pairs[0][1];

        for (int i = 1; i < pairs.size(); ++i) {
            if (pairs[i][0] > end) {
                count++;
                end = pairs[i][1];
            }
        }

        return count;
    }
};
代码逻辑:
1. 排序:
sort(pairs.begin(), pairs.end(), [](const vector<int>& a, const vector<int>& b) {
            return a[1] < b[1];
        });
  • 按照数对的第二个元素升序排序。

  • 示例:

    • 排序前:pairs = [[1, 2], [4, 5], [2, 3]]
    • 排序后:pairs = [[1, 2], [2, 3], [4, 5]]
2. 初始化:
int count = 1;
int end = pairs[0][1];
  • count:记录当前数对链长度,初始值为1。
  • end:记录当前数对链最后一个数对的第二个值,初始值为第一个数对的结束值。
3. 遍历数对:
for (int i = 1; i < pairs.size(); ++i) {
    if (pairs[i][0] > end) {
        count++;
        end = pairs[i][1];
    }
}
  • 从第二个数对开始,如果当前数对的开始值pairs[i][0]大于end,说明可以接在后面。
  • count加1,更新end为当前数对的结束值pairs[i][1]
4. 返回结果:
return count;
  • 返回数对链的长度。

相关文章:

  • 浅聊MQ之Kafka、RabbitMQ、ActiveMQ、RocketMQ持久化策略
  • Tomcat的升级
  • 跟着ai辅助学习vue3
  • 【C++】IO流
  • Kubernetes控制平面组件:etcd(二)
  • 播客自动化实操:用Make自动制作每日新闻播客
  • Java每日精进·45天挑战·Day19
  • 嵌入式 Linux 驱动开发:点灯大法
  • SpringBoot中使用MyBatis-Plus详细介绍
  • C++ 网络编程
  • 安卓逆向(签名校验)
  • SQL 注入漏洞原理以及修复方法
  • 开源语音克隆项目 OpenVoice V2 本地部署
  • 数据治理常用的开源项目有哪些?
  • CAS单点登录(第7版)2.规划
  • 数据结构与算法之排序算法-(计数,桶,基数排序)
  • 阿里云上线 DeepSeek,AI 领域再掀波澜
  • UE C++ UObject 功能的初步总结
  • 工作室如何实现一机一IP
  • moveable 一个可实现前端海报编辑器的 js 库
  • 市场监管总局通报民用“三表”专项检查结果
  • 科技日报刊文批院士专家“赶场式”跑会:助长浮躁之气功利之心
  • 上海模速空间“北斗七星”与“群星”生态布局,正在做些什么?
  • 许昌市场监管部门对胖东来玉石开展日常检查:平均毛利率不超20%
  • 山大齐鲁医院护士论文现“男性确诊子宫肌瘤”,院方称将核实
  • 魔都眼|上海环球马术冠军赛收官,英国骑手夺冠