LeetCode
面试题 17.08. 马戏团人塔
有个马戏团正在设计叠罗汉的表演节目,一个人要站在另一人的肩膀上。出于实际和美观的考虑,在上面的人要比下面的人矮一点且轻一点。已知马戏团每个人的身高和体重,请编写代码计算叠罗汉最多能叠几个人。
示例:
输入: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)
解法:按身高递增,按体重递减
解题思路:
因为这是一个二维的问题,既要考虑身高也要考虑体重,那我们可以把问题简化
我们用一个二维数组person来存放身高和体重
然后问题就变成了,在这一个二维数组中找到一个身高和体重都是递增的子序列
例:
height = [1,2,2,3,4]
weight = [1,3,4,5,7]
我们要找到一个身高和体重都是递增的序列,如果我们按照身高升序,身高相同时体重升序排序的话,我们就会得到上面的结果,然后我们在体重这一维数组中找最长递增子序列时,就会发现,得到的结果是1,3,4,5,7
,但是这是不符合题意的,因为3,4
的身高相同
所以我们按照身高递增&#