根据求解思路写出的code
if len(nums)==1:return nums[0]
# 因为2个负数相乘可能会变成正数
dpmax = [0] * len(nums)
dpmin = [0] * len(nums)
dpmax[0] = max(nums[0],0)
dpmin[0] = min(nums[0],0)
for i in range(1,len(nums)):
dpmax[i] = max(dpmax[i-1]*nums[i],dpmin[i-1]*nums[i],0,nums[i])
dpmin[i] = min(dpmax[i-1]*nums[i],dpmin[i-1]*nums[i],0,nums[i])
return max(dpmax)
解法2:类似于滑动窗口
可以用类似3个指针的方法