思路
1.题目问什么,我们定义什么状态
学习了 LeetCode 53. 最大子数组和 过后,下意识的我们会定义dp(i) 代表以i为结尾的最大乘积。
但是本题有个重要的问题是:数组中可能有负数!
例如:[−10,5,−10,...] , 此时对于dp(3) 而言 , 它应该是让 −10∗(−10∗5)=500 才是最大的 ,而不是−10∗5=−50
给你一个整数数组nums ,请你找出数组中乘积最大的非空连续 子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。
测试用例的答案是一个 32-位整数。
一个整数数组nums
一个整数表示最大乘积
输入
2 3 -2 4
输出
6
子数组[2,3]有最大乘积6。
输入
-2 0 -1
输出
0
结果不能为 2, 因为[−2,−1]不是子数组。
提示: