【python/M/152】Maximum Product Subarray

题目

【python/M/152】Maximum Product Subarray_第1张图片

基本思路

典型的动态规划问题
在整个过程中,dp[i]的值只需要dp[i-1]的值,不需要保存整个DP表,则DP可以用滚动数组进行优化。
其实就是设一对prevMin/prevMax表示上一个值,以及还有一对curMin/curMax表示当前值。

实现代码

class Solution(object):
    def maxProduct(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        length = len(nums)
        maxPro = nums[0]
        prevMax,prevMin = nums[0],nums[0]
        
        for i in range(1,length):
            curMax = max(nums[i],max(prevMax*nums[i],prevMin*nums[i]))
            curMin = min(nums[i],min(prevMax*nums[i],prevMin*nums[i]))
            prevMax,prevMin = curMax,curMin
            maxPro = max(prevMax,maxPro)
            
        return maxPro
        

你可能感兴趣的:(LeetCode)