题目描述
输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。
要求时间复杂度为O(n)。
示例1:
输入: nums = [-2,1,-3,4,-1,2,1,-5,4]
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
解题思路
这个问题的主要要保证时间复杂度O(n)
- 我们先判断之前数的和与加上当前item以后的和大小,
- 然后在比较上次结果与我们第一判断的结果, 就可以得到最大值
- 这里我们又给小技巧, 先赋值nums[0], 然后直接从index=1开始遍历,我们就可以直接处理nums只有一个值的情况
示例代码
def maxSubArray(self, nums: List[int]) -> int:
add = nums[0]
res = add
for i in range(1, len(nums)):
item = nums[i]
add = max(item, add + item)
res = max(res, add)
return res
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END