剑指Offer-42 连续子数组的最大和

题目:

输入一个 非空 整型数组,数组里的数可能为正,也可能为负。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。
样例
输入:[1, -2, 3, 10, -4, 7, 2, -5]
输出:18

解答:

class Solution(object):
    def maxSubArray(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        result = [0] * len(nums)
        for i in range(len(nums) - 1, -1, -1):
            if i == len(nums) - 1:
                result[i] = nums[i]
            else:
                if result[i + 1] > 0:
                    result[i] = nums[i] + result[i + 1]
                else:
                    result[i] = nums[i]
        return max(result)

猜你喜欢

转载自blog.csdn.net/u013796880/article/details/84858765