看见了一个超短的python解法,哇哦
思路:只要前一位数大于零,就把前一位数加到后一位数,这样就保证数字是一直保持增的趋势,而忽略减小的趋势,最后找到数组中的最大值并返回
时间复杂度:O(n)
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
for i in range(1, len(nums)):
if nums[i-1] > 0:
nums[i] += nums[i-1]
return max(nums)
算法效率