📜  具有最大和的子数组大小的 Python3 程序(1)

📅  最后修改于: 2023-12-03 15:36:47.807000             🧑  作者: Mango

Python3程序:具有最大和的子数组大小

简介

给定一个整数数组,找到具有最大和的连续子数组(至少包含一个数字),返回其最大和。

思路

我们可以遍历整个数组,实时记录当前子数组的和以及最大的和。当当前子数组的和为负数时,我们可以舍弃前面的部分,重新开始计算子数组的和。

代码实现
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),只需要常数个变量即可。