CodeACM
HOT 100 · 动态规划 · LC 152

乘积最大子数组:ACM 模式刷题

按标准输入读取测试数据,输出结果后可在 CodeACM 在线运行和提交。

题目描述

给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续 子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。

测试用例的答案是一个 32-位 整数。

请注意,一个只包含一个元素的数组的乘积是这个元素的值。

输入格式

第一行输入 n,第二行输入 n 个整数。

输出格式

输出最大乘积。

数据范围

  • 1 ≤ n ≤ 2×10⁴
  • −10 ≤ nums[i] ≤ 10

公开样例

样例 1

输入

4
2 3 -2 4

输出

6

子数组 [2,3] 的乘积最大,为 6。

样例 2

输入

3
-2 0 -1

输出

0

答案不是 2(即 -2 × -1),因为 -2 和 -1 之间隔着 0,并不是连续子数组;最大乘积应为 0。

练习建议

先根据输入输出格式写出可运行程序,再用公开样例检查结果;遇到边界情况时,补充自测用例后提交。