zoukankan      html  css  js  c++  java
  • 最大公共子序列(Runtime faster than 92.73% of Python3)

    其中的算法思想只是较为简单的动态规划,过去各种各样的考试写过很多次C/C++版本的,最近开始用Python做leetcode中的题目时遇到了该题目,很常规的做法竟然得到了意想不到的速度,但内存占用较差,仅超过了5%左右,后边试试有没有更好的方法。

    第一版code:

     def maxSubArray(self, nums: List[int]) -> int:
            d = []
            d.append(nums[0])
            max_ = nums[0]
            for i in range(1, len(nums)):
                aim = len(d)
                if d[aim-1] >= 0:
                    d.append(d[aim-1]+nums[i])
                else:
                    d.append(nums[i])
                #d.append(d[aim] >= 0 ? d[aim]+nums[i] : nums[i])
                if d[aim] > max_:
                    max_ = d[aim]
            return max_
    

    无意间看到了一个大佬的三行写法,真的挺妙的,可是无论是时间还是空间表现都不太好,不像大神说的faster than 98%

    第二版code:

    def maxSubArray(self, nums: List[int]) -> int:
            for i in range(1,len(nums)):
                nums[i] = max(nums[i],nums[i]+nums[i-1])
            return max(nums)
    
  • 相关阅读:
    BZOJ 4525 二分
    BZOJ 4565 状压DP
    BZOJ 3930 容斥原理
    BZOJ 4562 搜索...
    BZOJ 4563 错排+高精度
    BZOJ 1833 数位DP
    BZOJ 4517 组合数+错排
    python 入门学习(二)
    python 入门学习
    Python 爬虫
  • 原文地址:https://www.cnblogs.com/chuaner/p/11537123.html
Copyright © 2011-2022 走看看