当前位置: 首页 > news >正文

leetcode354. 俄罗斯套娃信封问题

思路:因为不允许相同宽度或者长度的信封嵌套,所以可以先对长度进行升序排序,长度相同对宽度进行降序排序
之后再根据宽度计算最长子序列,这样就避免了相同的宽度或者长度嵌套。
最后就是经典的计算最长子序列的方法了

def maxEnvelopes(self, envelopes):
        """
        :type envelopes: List[List[int]]
        :rtype: int
        """
        if not envelopes:
            return 0
        
        envelopes.sort(key = lambda x: (x[0],-x[-1]))

        n = len(envelopes)
        stack = [-1]
        res = 0
        for i in range(n):
            if envelopes[i][1] > stack[-1]:
                stack.append(envelopes[i][1])
            else:
                index = bisect.bisect_left(stack,envelopes[i][1])
                stack[index] = envelopes[i][1]
        return len(stack) - 1

动态规划计算最长子序列,超时

def maxEnvelopes(self, envelopes):
        """
        :type envelopes: List[List[int]]
        :rtype: int
        """
        if not envelopes:
            return 0
        
        envelopes.sort(key = lambda x: (x[0],-x[-1]))

        n = len(envelopes)
        dp = [1]*n 
        for i in range(n):
            for j in range(i):
                if envelopes[i][1] > envelopes[j][1]:
                    dp[i] = max(dp[i],dp[j]+1)
        res = 0
        for i in range(n):
            res = max(dp[i],res)
        return res

相关文章:

  • 哪个网站可以做兼职/百度关键词搜索量排名
  • 珠海微网站建设/建站系统哪个比较好
  • wordpress不能显示分类页/seo关键词排名优化评价
  • 中牟网站推广/四川网站制作
  • 网站怎么做登陆/网络公司名字大全
  • 网站建设找天宇智能/百度网站域名
  • 【批处理脚本】-1.1-注释命令rem
  • 【MySQL进阶】MySQL事务隔离与锁机制底层原理万字总结(建议收藏!!)
  • Qt使用第三方库QXlsx将数据库的数据导出为Excel表格
  • DevOps利器之二(Git,Gitlab)
  • aws imagebuilder 理解并使用imagebuilder构建pcluster自定义ami
  • 关于ElasticSearch的那些事,面试常见问题
  • 浅析正则表达式+范围规则校验表达式+js从字符串中截取数字
  • 设计模式——代理模式
  • 左右双指针 - nSum问题
  • HTML知识梳理
  • 黑马学ElasticSearch(十二)
  • 初识 Django