python實現 leetcode 53. maximum-subarray

按順序求數組裏面連續的數字和的最大值。maximum-subarray

效率最高的一種方式,代碼很清楚,同樣藉助兩個變量。

class Solution(object):
    def maxSubArray(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if len(nums) == 0:
            return 0

        max_sum = nums[0]
        cur_sum = 0

        for i in range(0, len(nums)):
            cur_sum = cur_sum + nums[i]

            if cur_sum > max_sum:
                max_sum = cur_sum

            if cur_sum < 0:
                cur_sum = 0

        return max_sum

我的做法是分開寫了, 時間複雜度差不多。稍微慢了10ms.

class Solution(object):
    def maxSubArray(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if len(nums) <= 1:
            return sum(nums)
        ret, k = nums[0], nums[0]
        for value in range(1, len(nums)):
            ret += nums[value]
            if ret >= 0:
                ret = max(ret, nums[value])
                k = max(k, ret)
            else:
                ret = nums[value]
                k = max(k, nums[value])
        return k
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章