Leetcode_动态规划_152. 乘积最大子序列

152. 乘积最大子序列

在这里插入图片描述
思路:
总结一下,也就是说,前 n 位的乘积最大子序列分以下3种情况:

  1. 前n - 1位的乘积最小子序列的乘积 * A[n]最大

  2. 前n - 1位的乘积最大子序列的乘积 * A[n]最大

  3. 前n - 1位的乘积最大子序列和乘积最小子序列的乘积 * A[n]都不是最大,而A[n]本身最大。
    参考答案1
    参考答案2

class Solution:
    def maxProduct(self, nums: List[int]) -> int:
        length = len(nums)
        if length == 0:
            return 0
        if length == 1:
            return nums[0]
        productmax = [0 for i in range(length)]
        productmin = [0 for i in range(length)]
        productmax[0] = nums[0]
        productmin[0] = nums[0]

        for i in range(length):
            productmax[i] = max(nums[i], nums[i]*productmax[i-1], nums[i]*productmin[i-1])
            productmin[i] = min(nums[i], nums[i]*productmax[i-1], nums[i]*productmin[i-1])

        return max(productmax)
发布了31 篇原创文章 · 获赞 0 · 访问量 729

猜你喜欢

转载自blog.csdn.net/freedomUSTB/article/details/105031892