JAVA程序设计: 俄罗斯套娃信封问题(LeetCode:354)

您所在的位置:网站首页 俄罗斯有套娃吗知乎 JAVA程序设计: 俄罗斯套娃信封问题(LeetCode:354)

JAVA程序设计: 俄罗斯套娃信封问题(LeetCode:354)

2024-07-02 18:53| 来源: 网络整理| 查看: 265

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

请计算最多能有多少个信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。

说明: 不允许旋转信封。

示例:

输入: envelopes = [[5,4],[6,4],[6,7],[2,3]] 输出: 3  解释: 最多信封的个数为 3, 组合为: [2,3] => [5,4] => [6,7]。

思路:先按宽度进行排序,我们可以很容易的发现其实此时只用对高度找一次最长上升子序列即可啦

坑点:当宽度一样时,我们需要按高度进行降序排序!!!!

想一想为什么? 题目要求说了必须要宽度和高度都要大于前一个时才能套进去。。。。

class Solution { class node { int x,y; public node(int x,int y) { this.x=x; this.y=y; } } class mySort implements Comparator { @Override public int compare(node o1, node o2) { if(o1.x==o2.x) return o2.y-o1.y; return o1.x-o2.x; } } public int maxEnvelopes(int[][] envelopes) { int n=envelopes.length,ans=0; if(n==0) return ans; node[] arr=new node[n]; for(int i=0;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3