53. Maximum Subarray -- Python

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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值