1. 程式人生 > >python實現 leetcode 53. maximum-subarray

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