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...

你可能感兴趣的:(LeetCode--最大子序和(python版))