152. 乘积最大子序列
思路:
总结一下,也就是说,前 n 位的乘积最大子序列分以下3种情况:
-
前n - 1位的乘积最小子序列的乘积 * A[n]最大
-
前n - 1位的乘积最大子序列的乘积 * A[n]最大
-
前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)