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)
            
Output:
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)
            
Output:
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)
            
Output:
Maximum Product: 6
Top 100 Codes By Learn-for-free
Start Preparing Arraysform here👇

Below You will find some of the most important codes in languages like C, C++, Java, and Python. These codes are of prime importance for college semester exams and online tests.

Getting Started

Find Largest Element in an Array: C C++ Java Python

Find Smallest Element in an Array: C C++ Java Python

Find the Smallest and Largest Element in an Array: C C++ Java Python

Find Second Smallest Element in an Array: C C++ Java Python

Calculate the Sum of Elements in an Array: C C++ Java Python

Reverse an Array: C C++ Java Python

Sort First Half in Ascending Order and Second Half in Descending: C C++ Java Python

Finding the Frequency of Elements in an Array: C C++ Java Python

Counting the Number of Even and Odd Elements in an Array: C C++ Java Python

Finding Maximum Product Sub-array in a Given Array: C C++ Java Python

Finding Arrays are Disjoint or Not: C C++ Java Python

Finding Equilibrium Index of an Array: C C++ Java Python

Rotation of Elements of Array - Left and Right: C C++ Java Python

Balanced Parenthesis Problem: C C++ Java Python