"""
题目:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4],
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
"""
def maxSubArray(lists):
ans = lists[0]
sum = 0
start = 0
end = 0
max_index = []
for i in range(len(lists)):
num = lists[i]
if sum > 0:
sum += num
else:
sum = num
start = i
# ans = max(ans, sum) # 怎么返回其子序列? 命名变量start,end记住起始位置
if ans < sum:
ans = sum
end = i
max_index = lists[start:end+1]
return ans,max_index
a = [-2, 1, -3, 4, -1, 2, 1, -5, 4]
sum, arr = maxSubArray(a)
print(sum)
print(arr)
# 时间复杂度:O(n)
# 空间复杂度:O()
53_最大子序和
最新推荐文章于 2022-02-07 15:42:30 发布