leetcode在力扣 App 中打开
调试中...
调试中...
题目描述
题目描述
题解
题解
提交记录
提交记录
代码
代码
测试用例
测试用例
测试结果
测试结果
中等
相关标签
相关企业
提示

有个马戏团正在设计叠罗汉的表演节目,一个人要站在另一人的肩膀上。出于实际和美观的考虑,在上面的人要比下面的人矮一点且轻一点。已知马戏团每个人的身高和体重,请编写代码计算叠罗汉最多能叠几个人。

示例:

输入:height = [65,70,56,75,60,68] weight = [100,150,90,190,95,110]
输出:6
解释:从上往下数,叠罗汉最多能叠 6 层:(56,90), (60,95), (65,100), (68,110), (70,150), (75,190)

提示:

  • height.length == weight.length <= 10000
通过次数
15.4K
提交次数
54.2K
通过率
28.3%


相关企业

提示 1
这个问题要求我们找出可以构建的最长的序列对,使其每个序列都在不断增长。如果你只需要一个元素不断增长呢?

提示 2
如果你只需要序列对中的一个元素为递增序列,那么只对该序列排序就好了。你的最长序列实际上是所有序列对(而不是重复的序列,因为最长序列是需要严格递增的)。对于最初的问题,这说明了什么?

提示 3
如果你根据高度对值进行排序,那么这将告诉你最后序列对的排序。最长序列必定符合这个相对顺序(但不一定包含所有的序列对)。现在只需要找到权重尺度上的最长递增子序列,并保持这些项的相对顺序不变。这本质上与下面的问题相同:对于一个整数数组找到最长的序列(不重新排序)。

提示 4
尝试用递归方法来评估所有的可能性。

提示 5
另一种思考这个问题的方法是:如果有结束于 A[0]到 A[n-1]每个元素的最长序列,你能用它来找出结束于元素 A[n]的最长序列吗?

评论 (0)

《程序员面试金典(第 6 版)》独家授权
本书是原谷歌资深面试官的经验之作,帮助了许多想要加入脸书、苹果、谷歌等 IT 名企的求职者拿到 Dream offer。本专题的 100+ 编程面试题是在原书基础上精心挑选出来的,帮助你轻松应战 IT 名企技术面试。
© 2025 领扣网络(上海)有限公司
3 人在线
行 1,列 1
height =
[65,70,56,75,60,68]
weight =
[100,150,90,190,95,110]
Source