# 152-maximum-product-subarray Try it on leetcode ## Description

Given an integer array nums, find a contiguous non-empty subarray within the array that has the largest product, and return the product.

The test cases are generated so that the answer will fit in a 32-bit integer.

A subarray is a contiguous subsequence of the array.

 

Example 1:

Input: nums = [2,3,-2,4]
Output: 6
Explanation: [2,3] has the largest product 6.

Example 2:

Input: nums = [-2,0,-1]
Output: 0
Explanation: The result cannot be 2, because [-2,-1] is not a subarray.

 

Constraints:

## Solution(Python) ```Python class Solution: def maxProduct(self, arr: List[int]) -> int: # max positive product # ending at the current position max_ending_here = arr[0] n = len(arr) # min negative product ending # at the current position min_ending_here = arr[0] # Initialize overall max product max_so_far = arr[0] # /* Traverse through the array. # the maximum product subarray ending at an index # will be the maximum of the element itself, # the product of element and max product ending previously # and the min product ending previously. */ for i in range(1, n): temp = max(max(arr[i], arr[i] * max_ending_here), arr[i] * min_ending_here) min_ending_here = min(min(arr[i], arr[i] * max_ending_here), arr[i] * min_ending_here) max_ending_here = temp max_so_far = max(max_so_far, max_ending_here) return max_so_far ```