A. 【入门】最大子数组和

    传统题 100ms 32MiB

【入门】最大子数组和

题目描述

给你一个整数数组 a ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

子数组 是数组中的一个连续部分。

输入格式

第一行一个整数 nn,表示数的个数,(1n1051 \le n \le 10^5)

第二行有 nn 个整数,aia_i 表示第 ii 个数 (104ai104-10^4 \le a_i \le 10^4)。

输出格式

一个整数,表示最大子数组和

9
-2 1 -3 4 -1 2 1 -5 4
6
1
-1
-1
5
5 4 -1 7 8
23

提示

  • 样例 1 的最大子数组是 [4,-1,2,1]
  • 样例 3 的最大子数组是 [5,4,-1,7,8]
  • 我们用 ans[i]ans[i] 表示以 a[i]a[i] 结尾的最大子数组和
    • 第一种情况:ans[i]=a[i]ans[i]=a[i] (不需要 ii 前面的数)
    • 第二种情况:ans[i]=ans[i1]+a[i]ans[i]=ans[i-1]+a[i]a[i]a[i] 加上以 a[i1]a[i-1] 结尾的最大子数组)
  • 最后的记过就是 ans[0...n1]ans[0...n-1] 中的最大值

数据规模与限制

  • 1n105,104ai1041 \le n \le 10^5, -10^4 \le a_i \le 10^4

来源