LeetCode--最大子序和(python版)

class Solution(object):
    def maxSubArray(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        sum=0
        max_sum=nums[0]
        for i in nums:
            sum=sum+i
            if sum>max_sum:
                max_sum=sum
            if sum<0:
                sum=0          
        return max_sum

官方解答:
代码非常简洁,遍历时当和大于当前最大值,就替换当前最大值,否则sum归零,保持当前值,同时继续寻找最大和值,for循环中的两个if语句需要按照上面的顺序来执行。

class Solution(object):
    def maxSubArray(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        max_substring=nums[0]
        for i in range(len(nums)):
            max_substring=max(max_substring,nums[i])
            for j in range(len(nums)-i-1):
                max_substring=max(max_substring,sum(nums[i:(i+j+2)]))
        return max(max_substring,nums[-1])

自己考虑的结果,第一代码写的比较混乱,根据测试用例修修补补了两次,第二时间复杂度太高,运行大的测试数组时报运行超时,Fail...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容