【剑指offer】Q31:连续子数组的组大和

来源:互联网 发布:虚拟机怎么共享网络 编辑:程序博客网 时间:2024/05/04 16:35

简短的分析见:http://blog.csdn.net/shiquxinkong/article/details/17934747

def FindGreatestSumOfSubArray(array, index = None):curSum = 0maxSum = 0#return maxSum without the start and end indexif index == None:for x in array:curSum = max(curSum, 0)curSum += xmaxSum = max(maxSum, curSum)return maxSum#return maxSum and the start and end indexelse:curS = -1curE = -1maxS = -1maxE = -1for i in range(len(array)):if curSum <= 0:curSum = array[i]curS = icurE = ielse:curSum += array[i]curE = iif curSum > maxSum:maxS = curSmaxE = curEmaxSum = curSumreturn maxSum, maxS, maxE

这里通过index参数重载了两个版本,一个仅仅返回最大子段和,但有的时候我们可能还被要求返回取得最大子段和的起始区间。

上面的代码虽然看起来不像动态规划,但是思想确实是dp的思想。


0 0
原创粉丝点击