Leecode一题解析
1,给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。
测试用例的答案是一个 32-位 整数。
示例 1:
输入: nums = [2,3,-2,4]
输出: 6
解释: 子数组 [2,3] 有最大乘积 6。
解析:1.由于第 ii 个状态只和第 i - 1i−1 个状态相关,根据「滚动数组」思想,我们可以只用两个变量来维护 i - 1i−1 时刻的状态,一个维护 f_{\max}f
max
,一个维护 f_{\min}f min
所以,结题代码如下所示:
class Solution:
def maxProduct(self, A):
B = A[::-1]
for i in range(1, len(A)):
A[i] *= A[i - 1] or 1
B[i] *= B[i - 1] or 1
return max(max(A),max(B))