《剑指Offer》刷题之连续子数组的最大和
我不知道将去向何方,但我已在路上! |
---|
时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 ! |
- 题目:
输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为 O(n)。 - 示例:
示例 1 :
输入:[1,-2,3,10,-4,7,2,-5]
返回值:18
说明:输入的数组为{1,-2,3,10,—4,7,2,一5},和最大的子数组为{3,10,一4,7,2},因此输出为该子数组的和 18。
- 代码1:
# -*- coding:utf-8 -*-
class Solution:
def FindGreatestSumOfSubArray(self, array):
result = [array[0]]
for i in range(1,len(array)):
result.append(max(array[i],array[i] + result[i-1]))
return max(result[:])
- 算法说明:
一维动态规划,逐个遍历,求和,选出最大值。