JZ30 连续子数组的最大和
my version
错误记录
- 把每次连续加和的最大值记错为每个出现的最大值
class Solution:
def FindGreatestSumOfSubArray(self, array):
if array:
con_sum = []
for i in range(len(array)):
con_sum.append(array[i])
temp_sum = array[i]
for j in range(i+1, len(array)):
temp_sum += array[j]
if temp_sum > con_sum[i]:
con_sum[i] = temp_sum
return max(con_sum)
return
虽然能过样例,但是时间复杂度为
O
(
n
2
)
O(n^2)
O(n2),不符合题目要求
book method1
举例分析
错误记录
- 考虑代码执行范围,特别是当有if时,注意有些操作是否需要continue
class Solution:
def FindGreatestSumOfSubArray(self, array):
if array:
max_sum = array[0]
sum_temp = array[0]
for i in range(1, len(array)):
if sum_temp < 0:
sum_temp = array[i]
else:
if sum_temp + array[i] > max_sum:
max_sum = sum_temp + array[i]
sum_temp += array[i]
max_sum = max(sum_temp, max_sum)
return max_sum
return
book method2
动态规划
递归的思想思考