📅  最后修改于: 2023-12-03 15:36:47.807000             🧑  作者: Mango
给定一个整数数组,找到具有最大和的连续子数组(至少包含一个数字),返回其最大和。
我们可以遍历整个数组,实时记录当前子数组的和以及最大的和。当当前子数组的和为负数时,我们可以舍弃前面的部分,重新开始计算子数组的和。
def max_subarray(nums: List[int]) -> int:
if not nums:
return 0
current_sum = max_sum = nums[0]
for num in nums[1:]:
current_sum = max(num, current_sum + num)
max_sum = max(max_sum, current_sum)
return max_sum
时间复杂度:O(n),其中n为数组的长度。
空间复杂度:O(1),只需要常数个变量即可。