思路
maxs:记录当前位置最大乘积
mins:记录当前位置最小乘积,因为当前位置的最大乘积 有可能是i-1的最小乘积*当前位置
如i-1最小乘积为-3,最大乘积为4 i当前位置值为-2 则
dp[i]最大乘积自然是-3*(-2)=6
class Solution(object):
def maxProduct(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums)==1:
return nums[0]
maxs =[0]*len(nums)
mins =[0]*len(nums)
dp =[0]*len(nums)
maxs[0] ,mins[0],dp[0]= nums[0],nums[0],nums[0]
for i in range(1,len(nums)):
maxs[i]=max(maxs[i-1]*nums[i],mins[i-1]*nums[i],nums[i])
mins[i]=min(maxs[i-1]*nums[i],mins[i-1]*nums[i],nums[i])
dp[i]=maxs[i]
return max(dp)