原题位置:Russian Doll Envelopes | LeetCode OJ

俄罗斯套娃信封问题的本质是一个二维版的 LIS(最长递增子列)的问题。为了更好地理解俄罗斯套娃信封问题的动态规划思路的解题方法,请参见 leetcode(300)—— Longest Increasing Subsequence(最长递增子序列)

解法 1

class Solution {
public:int maxEnvelopes(vector<pair<int, int>>& envelopes) {vector<int> dp(envelopes.size(), 1);sort(envelopes.begin(), envelopes.end());int res = 0;for (int i = 0; i < envelopes.size(); ++i){for (int j = 0; j < i; ++j){if (envelopes[i].first > envelopes[j].first && envelopes[i].second > envelopes[j].second)dp[i] = max(dp[i], dp[j] + 1);}res = max(res, dp[i]);}return res;}
};

容器内部元素是 pair 的情况下的 sort,首先比较的是 pair 的 first 成员,也即宽度,在宽度相等的情况下比较长度,这也是题目需要的比较方法。

注意,之所以在动态规划开始工作之前进行一次 sort 的目的,或者说此问题与 LIS 问题的区别除了一维升高到二维,还有就是子列的选则与顺序无关。

leetcode(354)—— Russian Doll Envelopes(俄罗斯套娃信封)相关推荐

  1. leetcode 354. Russian Doll Envelopes

    题目链接:https://leetcode.com/problems/russian-doll-envelopes/   俄罗斯套娃o(╯□╰)o 方法一 递归 思想:先对套娃从大到小进行排序,然后依 ...

  2. Leetcode之Russian Doll Envelopes

    题目: You have a number of envelopes with widths and heights given as a pair of integers (w, h). One e ...

  3. 354. Russian Doll Envelopes刷题笔记

    题解链接,用dp做 class Solution:def maxEnvelopes(self, envelopes: List[List[int]]) -> int:envelopes.sort ...

  4. leetcode算法题--Russian Doll Envelopes

    原题链接:https://leetcode.com/problems/russian-doll-envelopes/ class Solution {public:struct node {int x ...

  5. LeetCode--354. Russian Doll Envelopes

    问题链接:https://leetcode.com/problems/russian-doll-envelopes/ 俄罗斯套娃问题,因垂丝汀!!!,要求俄罗斯套娃能够达到的最多嵌套的层数.先要理解对 ...

  6. ​LeetCode刷题实战354:俄罗斯套娃信封问题

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  7. LeetCode - 354 俄罗斯套娃信封问题

    题目来源 354. 俄罗斯套娃信封问题 - 力扣(LeetCode) 题目描述 给你一个二维整数数组 envelopes ,其中 envelopes[i] = [wi, hi] ,表示第 i 个信封的 ...

  8. LeetCode 354. 俄罗斯套娃信封问题(最长上升子序 DP/二分查找)

    1. 题目 给定一些标记了宽度和高度的信封,宽度和高度以整数对形式 (w, h) 出现. 当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样. 请计算最多 ...

  9. leetcode 354. 俄罗斯套娃信封问题(二维排序有关)

    题目描述 给定一些标记了宽度和高度的信封,宽度和高度以整数对形式 (w, h) 出现.当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样. 请计算最多能有 ...

最新文章

  1. 多个网站共享一个mysql数据库_如何在多个Postgresql数据库之间共享表
  2. 如何利用FPGA进行时序分析设计
  3. [题解] 2019牛客暑期多校第三场H题 Magic Line
  4. 轴固定位置_3轴、3+2轴、5轴加工都有哪些区别?这篇文章给你整明白
  5. VTK:相互作用之DoubleClick
  6. leetcode算法刷题记录表
  7. 【Python-随机旋转】图像随机旋转及坐标进行旋转原理
  8. 【Flink】Flink检查点时间太小导致Exceeded checkpoint tolerable failure threshould
  9. 在fmri研究中,cca的应用历史
  10. 例4.2 又一版A+B - 九度教程第43题(进制转换)
  11. 服务器 ××× 上的MSDTC不可用解决办法
  12. win7,win8系统为什么灵格斯老与office,adobe等软件冲突,怎么解决
  13. 2022年低压电工考试题模拟考试题库及模拟考试
  14. html点击按钮状态改变,html点击按钮改变文字怎么实现
  15. 微信通讯录java实现的,小程序组件之仿微信通讯录的实现代码
  16. asp存入当前时间mysql_asp当前日期时间
  17. ios-webkit-debug-proxy 说明
  18. 电信移动信号测试软件,移动、联通、电信(信号强度大比拼)
  19. springboot消费kafka Listener method could not be invoked with the incoming message
  20. GTA5怎么快速吃零食 回血

热门文章

  1. 学习java第二天 java体系结构与表面执行流程 (one 大白(●—●))
  2. MySQL 之事务 及 其隔离级别
  3. java plsql_在PLSQL中编译复杂的java(转)
  4. 三点弯曲弹性模量怎么计算公式_腰背肌锻炼:五点支撑和三点支撑(视频)
  5. c语言最新标准 2017,2017最新C语言介绍
  6. python文件目录无权限_python检查目录文件权限并修改目录文件权限的操作
  7. 找不到libmmd.dll无法继续执行代码_代码中的软件工程 - xieyupei
  8. 面向对象and正则表达式
  9. github代码管理总结
  10. IntelliJ IDEA快速自动生成Junit测试类