标签:style blog http io ar color sp for on
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
For example, given the array [−2,1,−3,4,−1,2,1,−5,4]
,
the contiguous subarray [4,−1,2,1]
has the largest sum = 6
.
If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.
--
一维DP, O(n).
假设A(0, i)区间存在k,使得[k, i]区间是以i结尾区间的最大值, 定义为Max[i], 在这里,当求取Max[i+1]时,
if (Max[i] + A[i+1] >0)
Max[i+1] = Max[i] + A[i+1]
if(Max[i]+A[i+1] <0) #也就是要舍弃
Max[i+1] = 0
‘‘‘ Created on Nov 13, 2014 @author: ScottGu<gu.kai.66@gmail.com, 150316990@qq.com> ‘‘‘ class Solution: # @param A, a list of integers # @return an integer def maxSubArray(self, A): sum=0 max=-655356 for x in A: sum+=x if(sum>max): max=sum if(sum<0): sum=0 return max
LEETCODE —— Maximum Subarray [一维DP]
标签:style blog http io ar color sp for on
原文地址:http://www.cnblogs.com/scottgu/p/4112756.html