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

题目:输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。

要求时间复杂度为O(n)。

方法:动态规划  时间复杂度O(n)  空间复杂度O(1) 

动态规划每个位置是以当前指针为结尾的子列表的最大长度

dp[i] = dp[i-1] + (nums[i] if dp[i-1] > 0 else 0) 意思就是前面最大的和如果小于零,还不如不加

def maxSubArray(nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        for i in range(1,len(nums)):
            nums[i] += max(nums[i-1],0)
        return max(nums)

 

posted @ 2022-08-01 22:34  Liang-ml  阅读(21)  评论(0)    收藏  举报