解题思路:
动态数组dp[i]为下标为i处的最大累和
dp[0] = arr[0]
当dp[i-1]>0, dp[i] = dp[i-1]+arr[i]
当dp[i-1]<=0, dp[i] = arr[i]
#
# max sum of the subarray
# @param arr int整型一维数组 the array
# @return int整型
#
class Solution:
def maxsumofSubarray(self , arr ):
# write code here
'''
print(arr)
t = 0
maxsum1 = 0
for i in arr:
t += i
if t<0:
t=0
elif t>maxsum1:
maxsum1 = t
n = len(arr)
dp = [0]*n
dp[0] = arr[0]
for i in range(1,n):
if dp[i-1]>0:
dp[i] = dp[i-1]+arr[i]
else:
dp[i] = arr[i]
maxsum2 = max(dp)
n = len(arr)
dp = [0]*n
dp[0] = arr[0]
for i in range(1,n):
dp[i] = max(dp[i-1]+arr[i], arr[i])
maxsum3 = max(dp)
'''
n = len(arr)
t_max = arr[0]
maxsum = arr[0]
for i in range(1,n):
t_max = max(t_max+arr[i], arr[i])
if t_max > maxsum:
maxsum = t_max
#print(maxsum1)
#print(maxsum2)
return maxsum