#2166. 连续子数组的最大乘积

连续子数组的最大乘积

题目描述

输入一个长度为 n 的整型数组 nums,数组中的一个或连续多个整数组成一个子数组。求所有子数组的乘积的最大值。

1.子数组是连续的,且最小长度为 1 ,最大长度为 n

2.长度为 1 的子数组,乘积视为其本身,比如 [4] 的乘积为 4

3.该题的数据保证最大的乘积不会超过 int 的范围,即不超过23112^{31}-1

数据范围:

1<=n<=2×1051<=n<=2×10^5

100<=a[i]<=100−100<=a[i]<=100

输入格式

第一行输入一个正整数 n ,表示数组的长度

第二行输入 n 个整数,表示数组中的值。

输出格式

输出子数组的乘积的最大值

样例 #1

样例输入 #1

4
3 2 -2 4

样例输出 #1

6

样例 #2

样例输入 #2

3
-3 0 -2

样例输出 #2

0

样例 #3

样例输入 #3

3
-3 2 -2

样例输出 #3

12

提示

【样例解释 #1】

子数组[3,2]的乘积为6,[3,2,-1,4]的乘积为-24,[4]的乘积为4,故输出6

【样例解释 #1】

因为0在中间,所有包含0的子数组的乘积都为0,另外的数都是负数,所以最大乘积的子数组为[0],返回为0,因为子数组要求是连续的,所以[-3,-2]不是[-3,0,-2]的子数组,所以不能为6,