如何用leetcode解决俄罗斯套娃信封问题
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,这篇文章主要讲解了"如何用leetcode解决俄罗斯套娃信封问题",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何用leetcode解决俄罗斯套娃信封
千家信息网最后更新 2025年12月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安全错误
数据库的锁怎样保障安全
sql数据库界面怎么放大缩小
婚恋交友软件开发多少钱
联想服务器机箱风扇
同城交友软件app软件开发公司
数据库在客户关系管理的主要功能
饥荒云服务器修改模组
施乐700彩机服务器00
命令工具打开数据库
oracle显示数据库已加载
江西一站式软件开发代理价钱
有害化学品数据库
卫士通网络安全算新经济吗
finebi怎么添加数据库
大华视频服务器
域名服务器有哪些型号
宾馆处罚网络安全法相关的文章
有权对危险网络安全的行为
中职计算机网络技术基础学习
烽火星空网络安全业务
湛江erp软件开发外包
数据库安全的层次模型
酒店管理软件开发数据字典
公共网络安全事件怎么落实
删数据库的程序员怎么样了
面向抑郁症患者的软件开发
乡贤数据库
网络安全哪三种
数据库的安全保密设计方法
存储服务器怎样挣钱
神通数据库导入txt字体