Leetcode.152 https://leetcode.com/problems/maximum-product-subarray/
def solve_max_product(A):
m = A.copy()
n = A.copy()
for i in range(1, len(A)):
m[i] = max(m[i - 1] * A[i], max(A[i], n[i - 1] * A[i]))
n[i] = min(n[i - 1] * A[i], min(A[i], m[i - 1] * A[i]))
return max(m)
a = [2, 3, -2, 4]
print(solve_max_product(a))