53. Maximum Subarray
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
For example, given the array [-2,1,-3,4,-1,2,1,-5,4],
the contiguous subarray [4,-1,2,1] has the largest sum = 6.
我的思路:
刚看到这个题目,首先的想法是遍历数组从第0位依次取数组中的两个元素相加与0比大小,若大于0则加上他们的和,若小于零则,sum则只保存当前最大值,然后循环跳到下一个位置。这么思考是不合理的,因为从不同位置取,每一次数组的长度都不一样,很是复杂。
参考思路:
先假设第一个值是最大值(msum)(当数组只有一个数值时,它就是最大值),然后挨个取数组中的数与当前的最大值相加,若相加后当前最大值(current_sum)超过(msum),就更新msum,这样遍历一次即可获得最大值。
参考代码:
class Solution:
def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
msum = nums[0]
current_sum = 0
for num in nums:
current_sum += num
if msum < current_sum:
msum = current_sum
if current_sum < 0:
current_sum = 0
continue
return msum

被折叠的 条评论
为什么被折叠?



