剑指 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)

浙公网安备 33010602011771号