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

思路一:举例分析数组的规律,每次加上负数之前有一个和,如果加上这个负数之后数组和变为负数,则抛弃前面的数

class Solution(object):
    def maxSubArray(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        max = nums[0]
        sum = nums[0]
        for i in range(1,len(nums)):
            if sum + nums[i] > nums[i]:#将 sum+nums[i] 和num[i]对比 
                sum += nums[i]
            else:s
                sum = nums[i]
            if sum > max:
                max = sum 
        return max

思路二:动态规划,递归公式为如果 i=0或者 f(i-1)小于等于0,那么 f(i)=pData[i],否则 f(i)=f(i-1)+pData[i]。通常我们用递归的方式分析动态规划问题,但最终都会基于循环去实现编码。

你可能感兴趣的:(剑指offer42.连续子数组的最大和)