题目:输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为 O(n).
这个题如果不考虑时间复杂度的话,可以直接用穷举法遍历所有的子数组的和,保存其最大值,思路非常简单。
class Solution:
def FindGreatestSumOfSubArray(self, array):
# write code here
max_sub = array[0]
for i in range(len(array)):
for j in range(len(array)-i):
if sum(array[i:i+j+1]) > max_sub:
max_sub = sum(array[i:i+j+1])
return max_sub
在考虑时间复杂度的情况下,似乎就比较困难一些,在讨论区看到了好多动态规划的思想,感觉有点看不懂,暂时忽略...(偷个懒)