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

leetcode 354. 俄罗斯套娃信封问题

题目:354. 俄罗斯套娃信封问题 - 力扣(LeetCode)

先对所有信封排个序,w从小到大,如果w相同则h从大到小。可以证明从左往右遍历数组,如果h[j] > h[i] && i < j,则 i 可以放进 j 里。

现在问题就变成了求这个数组的最大递增子序列的长度。

排序和求最大递增子序列长度的复杂度都是O(n*log(n))。

bool myComp(vector<int>& a, vector<int>& b) {
    if (a[0] < b[0]) {
        return true;
    }
    if (a[0] > b[0]) {
        return false;
    }
    if (a[1] > b[1]) {
        return true;
    }
    if (a[1] < b[1]) {
        return false;
    }
    return false;
}
class Solution {
public:
    int maxEnvelopes(vector<vector<int>>& envelopes) {
        sort(envelopes.begin(), envelopes.end(), myComp);
        vector<int> tails;
        int h, l, r, m, k;
        for (int i = 0; i < envelopes.size(); i++) {
            h = envelopes[i][1];
            if (tails.empty() || h > tails[tails.size() - 1]) {
                tails.push_back(h);
                continue;
            }
            if (tails[0] > h) {
                tails[0] = h;
                continue;
            }
            l = 0;
            r = tails.size() - 1;
            k = -1;
            while (l <= r) {
                m = (l + r) / 2;
                if (tails[m] < h) {
                    k = m;
                    l = m + 1;
                } else {
                    r = m - 1;
                }
            }
            if (tails[k + 1] > h) {
                tails[k + 1] = h;
            }
        }
        return tails.size();
    }
};


http://www.kler.cn/a/455031.html

相关文章:

  • Llama 3 预训练(二)
  • 蓝桥杯速成教程{三}(adc,i2c,uart)
  • 如何训练Stable Diffusion 模型
  • 接口测试Day03-postman断言关联
  • kubernetes存储架构之PV controller源码解读
  • Vue.js 高级组件开发:设计模式与实践
  • Debian12 安装配置 ODBC for GaussDB
  • 光谱相机与普通相机的区别
  • 生态学研究新工具:CASA模型原理解析与MODIS NDVI/FPAR遥感数据处理
  • 一文详解串行、并行、同步、异步
  • 【C++】数据结构 单链表的实现(企业存储用户数据的实现)
  • JS中for循环里的ajax请求不数据
  • Win10自定义系统模式和应用模式
  • Docker部署捕鱼达人网页小游戏
  • OpenCV-基本概念以及开发基础模块介绍
  • Apache Commons ThreadUtils 的使用与优化
  • 阿尔法TX1秒安卓全站仪测评,可用CAD放样的全站仪到底怎么样?
  • 鸿蒙HarmonyOS学习笔记(8)
  • 各种数据库类型介绍
  • Python函数机制
  • 美畅物联丨如何通过视频汇聚平台汇聚视频并推送至上级28181平台
  • vue2/3,Spring Boot以及生产环境跨域解决方案
  • LabVIEW条件配置对话框
  • 互联网十万个为什么之什么是微服务
  • PSINS工具箱函数介绍——kfplot
  • oracle基础:中文字段排序详解