602. 俄罗斯套娃信封

Posted yunxintryyoubest

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了602. 俄罗斯套娃信封相关的知识,希望对你有一定的参考价值。

602. 俄罗斯套娃信封

中文English

给一定数量的信封,带有整数对 (w, h) 分别代表信封宽度和高度。一个信封的宽高均大于另一个信封时可以放下另一个信封。
求最大的信封嵌套层数。

样例

样例 1:

输入:[[5,4],[6,4],[6,7],[2,3]]
输出:3
解释:
最大的信封嵌套层数是 3 ([2,3] => [5,4] => [6,7])。

样例 2:

输入:[[4,5],[4,6],[6,7],[2,3],[1,1]]
输出:4
解释:
最大的信封嵌套层数是 4 ([1,1] => [2,3] => [4,5] / [4,6] => [6,7])。
输入测试数据 (每行一个参数)如何理解测试数据?

 

class Solution:
    """
    @param: envelopes: a number of envelopes with widths and heights
    @return: the maximum number of envelopes
    """
    ‘‘‘
    大致思路:
    求出最大可能套娃的数量
    ‘‘‘
    def maxEnvelopes(self, envelopes):
        if not envelopes or len(envelopes) == 0:return 0 

        #初始化
        l = len(envelopes)
        dp = [1 for _ in range(l)]

        for i in range(1,l):
            for j in range(i):
                if (envelopes[i] != envelopes[j]):
                    if envelopes[i][0] > envelopes[j][0] and envelopes[i][1] > envelopes[j][1]:
                        dp[i] = max(dp[i],dp[j] + 1)
        
        return max(dp)

注:时间复杂度超过了限制,O(n2),lintcode未通过,待优化。

以上是关于602. 俄罗斯套娃信封的主要内容,如果未能解决你的问题,请参考以下文章

俄罗斯套娃信封问题

LeetCode——俄罗斯套娃信封问题

LeetCode 354. 俄罗斯套娃信封问题

力扣技巧之动态规划力扣354:俄罗斯套娃信封问题C++

数据结构与算法之深入解析“俄罗斯套娃信封问题”的求解思路与算法示例

LeetCode 354. 俄罗斯套娃信封问题