Finding Maximum Product Sub-array in a Given Array in Python
Understanding Maximum Product Sub-array
This task involves finding the contiguous sub-array that has the maximum product.
We will explore three different methods to achieve this in Python.
Method 1: Using Brute Force
This method calculates the product of all possible sub-arrays and finds the maximum.
def max_product_subarray(arr): max_product = float('-inf') for i in range(len(arr)): product = 1 for j in range(i, len(arr)): product *= arr[j] max_product = max(max_product, product) print(f"Maximum Product: {max_product}") arr = [2, 3, -2, 4] max_product_subarray(arr)
Maximum Product: 6
Method 2: Using Dynamic Programming (Kadane's Variation)
This method keeps track of the maximum and minimum products at each step.
def max_product_subarray(arr): max_product = min_product = result = arr[0] for num in arr[1:]: temp = max(num, num * max_product, num * min_product) min_product = min(num, num * max_product, num * min_product) max_product = temp result = max(result, max_product) print(f"Maximum Product: {result}") arr = [2, 3, -2, 4] max_product_subarray(arr)
Maximum Product: 6
Method 3: Using a Single Pass Approach
This method efficiently finds the maximum product sub-array using a single pass.
def max_product_subarray(arr): max_product = min_product = result = arr[0] for num in arr[1:]: if num < 0: max_product, min_product = min_product, max_product max_product = max(num, num * max_product) min_product = min(num, num * min_product) result = max(result, max_product) print(f"Maximum Product: {result}") arr = [2, 3, -2, 4] max_product_subarray(arr)
Maximum Product: 6