最长连续子序列和的所含元素 -- Kadane算法拓展
建议先回顾经典Kadane算法 -- 最长连续子序列和:
最大连续子序列和(动态规划 -- 经典Kadane算法)-CSDN博客
拓展代码:
def max_subarray_sum(nums):
global_max = current_max = nums[0]
left = right = temp = 0
for i in range(1, len(nums)):
if nums[i] > current_max + nums[i]: # # 更换起始点
current_max = nums[i]
# temp = i # 也可以用temp作为保险记录,防止出错
left = i
else:
current_max += nums[i]
if current_max > global_max: # 如果当前连续子序列还可以边长,更新global_max,并且记录右边界left
global_max = current_max
# left ,right = temp, i # 记录每一满足的区间
right = i
return global_max, nums[left:right+1] # 取不到右边界,需要+1
nums = [-2,1,-3,4,-1,2,1,-5,4]
global_max, subarray = max_subarray_sum(nums)
print(global_max)
print(subarray)
'''
6
[4, -1, 2, 1]
'''