题目

给定一些标记了宽度和高度的信封,宽度和高度以整数对形式 (w, h) 出现。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。请计算最多能有多少个信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。说明:
不允许旋转信封。示例:输入: envelopes = [[5,4],[6,4],[6,7],[2,3]]
输出: 3
解释: 最多信封的个数为 3, 组合为: [2,3] => [5,4] => [6,7]。

解决方法

class Solution {public int maxEnvelopes(int[][] envelopes) {//对二维数组进行排序//首先对w(宽度) 进行升序排序//这样我们就可以根据h(高度) 就行求最长的升序序列数  就是最后的结果值//但是有一个情况是 同等的宽度 是不能嵌套装到信封里 所以我们要降序 这样计算最长的升序数列的时候//同样的宽度的信封  都会被过滤掉Arrays.sort(envelopes, new Comparator<int[]>() {@Overridepublic int compare(int[] o1, int[] o2) {if (o1[0] == o2[0]) {return o2[1] - o1[1];}else {return o1[0] - o2[0];}}});int [] arr = new int[envelopes.length];for (int i = 0; i < envelopes.length; i++) {arr[i] = envelopes[i][1];}return lengthOfLIS(arr);}public int lengthOfLIS(int[] nums) {int[] dp = new int[nums.length];int len = 0;for (int num : nums) {int i = Arrays.binarySearch(dp, 0, len, num);if (i < 0) {i = -(i + 1);}dp[i] = num;if (i == len) {len++;}}return len;}
}

算法--------俄罗斯套娃信封问题(Java版本)相关推荐

  1. Google的S2算法原理以及使用Java版本--部分参考自《高效的多维空间点索引算法》

    文章目录 相关资料 1.S2算法是什么? 2.为什么要使用S2算法? 3.S2的原理是什么? 1)球面坐标变换 2)球面坐标转平面坐标(降维) remark: 3)球面矩形投影修正 4)点与坐标轴点相 ...

  2. 算法图解之快速排序(JAVA版本)

    阅读这篇文章就证明你已经开始踏上了算法的修仙之路,接下来我会两天一更,介绍图解算法里面的算法的实现, 适合Java程序员阅读. 文章目录 前言 一.什么是分治思想? 1.核心思想 2.案例展示 二.快 ...

  3. 算法-----------接雨水(Java版本)

    题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 思路及解决方法 static class Solution {public int trap( ...

  4. 算法---------简化路径(Java版本)

    题目 以 Unix 风格给出一个文件的绝对路径,你需要简化它.或者换句话说,将其转换为规范路径.在 Unix 风格的文件系统中,一个点(.)表示当前目录本身:此外,两个点 (..) 表示将目录切换到上 ...

  5. 算法----------字符串相乘(Java 版本)

    题目 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式.示例 1:输入: num1 = "2", nu ...

  6. 算法--------最大正方形(Java版本)

    题目 在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积.示例:输入: 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0输出: 4 解决方 ...

  7. 算法----------同构字符串(Java版本)

    题目 给定两个字符串 s 和 t,判断它们是否是同构的.如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的.所有出现的字符都必须用另一个字符替换,同时保留字符的顺序.两个字符不能映射到同 ...

  8. 插入排序算法 java_排序算法实现-插入排序(Java版本)

    原标题:排序算法实现-插入排序(Java版本) 插入排序(英语:Insertion Sort)是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到 ...

  9. Dijkstra迪杰斯特算法(C++版本和JAVA版本)

    原理 dijkstra主要用于求解最短路径,表示从起始点到地图上其余各点的最短路径. 在dijkstra中认为,若A-B-C为最短路径,则A-B也是最短路径. Dijkstra和A*的关系 在A*中, ...

最新文章

  1. alert 返回页面 刷新_详解 HTML 页面原生的生命周期事件
  2. python与c语言数据交互,python与c语言交互应用实例
  3. Js中substr,substring,slice截取字符串的异同
  4. 路由器无服务器无响应是怎么回事啊,wifi服务器无响应怎么解决(图文)
  5. 【若依(ruoyi)】打印bootstrapTable数据
  6. java中apache安装与配置_Apache应用服务器之四:Apache与Tomcat安装与配置
  7. 基于JAVA+Servlet+JSP+MYSQL的个人博客系统
  8. 2个Python入门级的实战项目
  9. 女陔说你不懂我, 到底什么意思
  10. 《IT播吧.-.大灰狼老师出品的零基础汇编视频课程》学习笔记
  11. android ListView的怪异现象
  12. 把AppData目录挪到D盘的方法方法
  13. 三菱FX系列PLC辅助继电器(M)
  14. TortoiseSVN配置外部对比工具
  15. Android自定义组件之ListPopWindow
  16. Cypress的SDK与驱动安装
  17. 五 、常用基本命令(重要)
  18. BD243迷你特斯拉线圈套件
  19. aardio工具提示控件的简单实例
  20. cesuim原理篇(一)--渲染调度

热门文章

  1. 怎么查硬盘序列号_担心硬盘体质?不妨先给硬盘做一次体检
  2. vfprintf php,PHP vfprintf() 函数
  3. C++知识点16——使用C++标准库(IO流格式控制)
  4. HALCON表面划痕检测
  5. 决策树 python 结果画图_scikit-learn决策树的python实现以及作图
  6. Web测试实践-任务进度-Day02
  7. docker~Dockerfile优化程序的部署
  8. linux下的module_param()解释【转】
  9. 构造函数(包含this关键字的简单应用)
  10. java创建二叉树并递归遍历二叉树