Leetcode 152每日一题:乘积最大子数组
2021-01-19 06:15
标签:元素 bsp solution tco return 最小值 for 数字 min 中等难度题目 给你一个整数数组 可以优化不用两个list存放max和min Leetcode 152每日一题:乘积最大子数组 标签:元素 bsp solution tco return 最小值 for 数字 min 原文地址:https://www.cnblogs.com/SuckChen/p/12909502.htmlnums
,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。输入: [2,3,-2,4]
输出:
6
解释: 子数组 [2,3] 有最大乘积 6。
思路:max2 记录每一个元素为截止的子数组乘积的最大最小,
(1)当前数 a[i]为正,则最大值为 i-1 结尾的最大值max2[i-1]*a[i] or a[i]
(2)a[i]为负,以a[i]为结尾的子数组,最大值为 i-1 结尾的最小值min2[i-1]*a[i] or a[i](3)a[i]为0,i结尾的乘积最大最小都为0
tclass Solution:
def maxProduct(self, nums: List[int]) -> int:
if len(nums)==0:
return 0
max2 = [nums[0]]
min2 = [nums[0]]
for i in range(1,len(nums)):
if nums[i]>0:
max1 = max(max2[i-1]*nums[i],nums[i])
min1 = min(min2[i-1]*nums[i],nums[i])
elif nums[i]