如何用leetcode解决俄罗斯套娃信封问题
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要讲解了"如何用leetcode解决俄罗斯套娃信封问题",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何用leetcode解决俄罗斯套娃信封
千家信息网最后更新 2026年11月01日如何用leetcode解决俄罗斯套娃信封问题
这篇文章主要讲解了"如何用leetcode解决俄罗斯套娃信封问题",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何用leetcode解决俄罗斯套娃信封问题"吧!
一、题目内容
给定一些标记了宽度和高度的信封,宽度和高度以整数对形式 (w, h) 出现。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。
请计算最多能有多少个信封能组成一组"俄罗斯套娃"信封(即可以把一个信封放到另一个信封里面)。
说明:
不允许旋转信封。
示例:
输入: envelopes = [[5,4],[6,4],[6,7],[2,3]]
输出: 3
解释: 最多信封的个数为 3, 组合为: [2,3] => [5,4] => [6,7]。
二、解题思路
先对信封按照宽度w升序排序,然后再对相同宽度w的信封按照高度h降序;
高度降序的目的是在对排好序的信封数组里,用一个数组存储高度h,并利用二分插入方式存储信封的高度h(LIS:最长上升(不下降)子序列);
如果信封的宽度w一样,则选择高度h小的,否则就会存放相同宽度w的不同高度h的信封,但是宽度w是不能一样的,因此之后要按照高度h降序,这样就可以更新这个高度h。
三、代码
from bisect import bisect_leftclass Solution: def LIS(self, nums): res = [] for num in nums: index = bisect_left(res, num) if index == len(res): res.append(num) else: res[index] = num return len(res) def maxEnvelopes(self, envelopes: list) -> int: envelopes.sort(key=lambda x: (x[0], -x[1])) print(envelopes) return self.LIS([envelope[1] for envelope in envelopes])if __name__ == '__main__': s = Solution() envelopes = [[4, 5], [4, 6], [6, 7], [2, 3], [1, 1]] ans = s.maxEnvelopes(envelopes) print(ans)
感谢各位的阅读,以上就是"如何用leetcode解决俄罗斯套娃信封问题"的内容了,经过本文的学习后,相信大家对如何用leetcode解决俄罗斯套娃信封问题这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
信封
高度
宽度
俄罗斯
问题
内容
学习
相同
思路
数组
存储
不同
最长
个数
代码
升序
就是
序列
形式
情况
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
科技互联网产品
互联网金融监管科技数据
科技服务与互联网
狮子座互联网科技
期待互联网科技
宁夏众和广鑫互联网科技有限公司
互联网科技与管理
互联网软件和科技
黑科技闪耀互联网之光
广西互联网科技孵化中心
高科技互联网发展前景如何
2021互联网科技公司排名
上海钢联属于互联网科技股吗
皮皮虾互联网科技有限公司
浙南科技城互联网大厦招聘
福仕德教育科技互联网
三亚科技创新互联网基地
互联网领先科技成果宣传视频
科技互联网企业在行动
株洲百竞科技的互联网营销顾问
互联网扶贫科技
互联网与新科技
唐信互联网科技
互联网科技宣传片
互联网公司会议桌创意科技软装饰
深圳市运趣互联网科技有限公司
字节跳动和互联网科技
辽宁互联网新科技
华夏恒生科技与互联网科技
富国互联网金融科技混合基金