如何用leetcode解决俄罗斯套娃信封问题
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,这篇文章主要讲解了"如何用leetcode解决俄罗斯套娃信封问题",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何用leetcode解决俄罗斯套娃信封
千家信息网最后更新 2025年01月24日如何用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
监控时间服务器
数据库更改日期语句
河南服务器硬盘维修
服务器连接管理app
dicom文件存储到数据库
2005全版数据库
获取前台text数据库
防火墙 时间服务器
网挺好的为什么重新连接服务器
超融合服务器价格
下沙APP软件开发
网络安全模式一点就卡
系统网络安全事故处理方案
网络安全法的英文翻译
日本软件开发公立大学
数据库创建和管理实验报告
人工智能软件开发专业学什么
php 数据库代理
华泰证券软件开发工程师
南方电网企业网络安全
永恒之塔怀旧服选择哪个服务器
网页游戏软件开发公司
航天科工网络技术有限公司
轮询数据库 java
江西现代软件开发批发
山东省教育厅网络安全和信息化
35岁学软件开发
广州出货软件开发
上海量境网络技术公司