152. Maximum Product Subarray
def maxProduct(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if not nums:
return 0
max_val = min_val = res = nums[0]
for n in nums[1:]:
max_val, min_val = max(n, n * max_val, n * min_val), min(n, n * max_val, n * min_val)
res = max(res, max_val)
return res