您的位置:首页 > 编程语言 > Python开发

Leetcode-Maximum Subarray-Python

2017-08-13 18:40 274 查看

Maximum Subarray

最大子串和问题:从一个数组中找出一个子串使其和最大。

Description

tips:

子串是指数组中连续的若干个元素,而子序列只要求各元素的顺序与其在数组中一致,而没有连续的要求。

解题思路

自己没有想出来,直接借鉴了网上的动态规划思路,我觉得下面是一些解决的关键点:

- 对于array[1…n],如果array[i…j]就是满足和最大的子串,那么对于任何k(i<=k<=j),我们有array[i…k]的和大于0。具体证明

- 假设已知0, .., k的最大和sum[k]以后,则0, …, k+1的最大和sum[k+1]分为以下两种情况

1)若sum[k]>=0,则sum[k+1]=sum[k]+A[k+1]。代码中即curSum = curSum+nums[i]。

2)若sum[k]<0,另起一个SubArray,令sum[k+1]=A[k+1]。代码中即curSum = nums[i]。

def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if not nums:
return 0

curSum = maxSum = nums[0]
for i in range(1, len(nums)):
curSum = max(nums[i], curSum+nums[i])
maxSum = max(maxSum, curSum)

return maxSum
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息