Leetcode_ダイナミックプログラミング_152。最大サブシーケンスの製品

最大配列の152製品

ここに画像を挿入説明
アイデア:
、である、合計最大サブトップの積n次の3つの場合に分けします。

  1. nは前 - 最小配列* A [n]が最大値の積の積

  2. nは前 - 最大のサブ物* A [n]が最大値の積

  3. nは前-製品* A [n]は1ビットシーケンスと最小のサブシーケンスの最大積の積が最大値ではなく、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