python實現 leetcode 53. maximum-subarray
阿新 • • 發佈:2018-11-03
按順序求數組裡面連續的數字和的最大值。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