按顺序求数组里面连续的数字和的最大值。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