题目
输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。
Python题解
def find_greatest_subarray(arr):
if arr is None or len(arr) == 0:
return 0
sum = arr[0]
max_num = arr[0]
for idx in xrange(1, len(arr)):
sum = max(arr[idx] + sum, arr[idx])
if sum > max_num:
max_num = sum
return max_num
if __name__ == '__main__':
arr = [1, -2, 3, 10, -4, 7, 2, -5]
print find_greatest_subarray(arr)