[354][困难][贪心][动态规划] 俄罗斯套娃信封问题
题目描述
输入: envelopes = [[5,4],[6,4],[6,7],[2,3]]
输出: 3
解释: 最多信封的个数为 3, 组合为: [2,3] => [5,4] => [6,7]。解题思路
贪心
动态规划
最后更新于
输入: envelopes = [[5,4],[6,4],[6,7],[2,3]]
输出: 3
解释: 最多信封的个数为 3, 组合为: [2,3] => [5,4] => [6,7]。最后更新于
class Solution:
def maxEnvelopes(self, envelopes: List[List[int]]) -> int:
envelopes.sort(key=lambda x: (x[0], -x[1]))
length = []
for _, height in envelopes:
index = bisect.bisect_left(length, height)
if index == len(length):
length.append(height)
else:
length[index] = height
return len(length)class Solution:
def maxEnvelopes(self, envelopes: List[List[int]]) -> int:
n = len(envelopes)
if n == 0:
return 0
envelopes.sort(key=lambda x: (x[0], -x[1]))
max_len = 1
dp = [1] * len(envelopes)
for j in range(len(envelopes)):
for i in range(j):
if envelopes[i][1] < envelopes[j][1]:
if dp[i] >= dp[j]:
dp[j] = dp[i] + 1
max_len = max(max_len, dp[j])
return max_len