Python LeetCode(53.最大子序和)
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4],
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
Solution:(设置和sum与最大和max_sum两个变量,初始化sum为0,max_sum为nums[0].遍历array,将遍历的值加到sum中,对sum进行判断:如果sum的值大于max_sum,则把max_sum的值置为sum;如果sum小于0,则再将sum的值置为0(即加成负数后将sum置为0重新开始加))
class Solution(object):
def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
sum = 0
max_sum = nums[0]
for num in nums:
sum += num
max_sum = max(sum, max_sum)
sum = max(sum, 0)
return max_sum
solution = Solution()
print(solution.maxSubArray([-1, -2, 4, 1, -1, 2, -2]))
6