示例说明:
输入 = [ 2, 3, -2, 4 ]
product_left_to_right = 输入 = [ 2, 3, -2, 4 ]
product_right_to_left = 输入[::-1] = [ 4, -2, 3, 2 ]
第一次迭代:
6 = 3 * 2
product_left_to_right = [ 2, 6, -2, 4 ]
-8 = -2 * 4
product_right_to_left = [ 4, -8, 3, 2 ]
第二次迭代:
-12 = -2 * 6
product_left_to_right = [ 2, 6, -12, 4 ]
-24 = 3 * -8
product_right_to_left = [ 4, -8, -24, 2 ]
第三次迭代:
-48 = 4 * -12
product_left_to_right = [ 2, 6, -12, -48 ]
-48 = 2 * -24
product_right_to_left = [ 4, -8, -24, -48 ]
最大值比较:
product_left_to_right 的最大值 = [ 2, 6, -12, -48 ] = 6
product_right_to_left 的最大值 = [ 4, -8, -24, -48 ] = 4
最大 (6, 4) = 6
返回 6
def maxProduct(self, nums: List[int]) -> int:
l = len(nums)
nums_l=nums //product_left_to_right
nums_r = nums[::-1] //product_right_to_left
for i in range(1,l,1):
nums_l[i] *= (nums_l[i-1] or 1) //if meets 0 then restart in-place by itself.
nums_r[i] *= (nums_r[i-1] or 1)
return max(max(nums_l), max(nums_r))