本文已参与「新人创作礼」活动,一起开启掘金创作之路
题目描述
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/ma… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路分析
最大子序和是一道经典的动态规划题,当然看到题目的第一眼并不能马上判断出这是动态规划题(至少我看不出)。这其实没有什么关系,在我看来,算法的本质是一种思维方式,它的意义可能更在于教我们怎么思考。刚看到这题没有思路,也不知道是动态规划,没关系,从示例分析,思考答案是怎么得出的。
以示例为例:(写的比较快,如果有问题,还望阅者指出)

oZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NoaUppZURlWWluWXU=,size_16,color_FFFFFF,t_70)
代码实现
nums = input().split()
length = len(nums)
nums[0] = int(nums[0])
for i in range(1, length):
subMaxSum = max(int(nums[i]) + int(nums[i-1]), int(nums[i]))
nums[i] = subMaxSum
print(max(nums))