您的位置:首页 > 编程语言 > Python开发

leetcode.array--53. Maximum Subarray

2017-10-12 23:32 399 查看
题目:53. Maximum Subarray

问题描述:https://leetcode.com/problems/maximum-subarray/description/

题目意思是说,给定一个数组(长度大于0),找到该数组的子序列和的最大值。例如:[-2,1,-3,4,-1,2,1,-5,4],和最大的子序列为[4,-1,2,1],返回该子序列的和,即6。

思路很简单啦,当某一个子序列的和为负值时,这个子序列肯定不会是目标子序列的前缀。也就是说,我们从nums[0]开始向后求和就好啦,当和为负数时该位置就是一个新的起点,记得保存下计算的最大值即可。

Python:

class Solution(object):
def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
length=len(nums)
if length==0:
return
if length==1:
return nums[0]
res,tempSum=max(nums),0
for i in range(length):
tempSum+=nums[i]
if tempSum<0:
tempSum=0
continue
else:
res=max(res,tempSum)
return res
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  array leetcode python