Python program to find maximum product quadruple in an array

In this article, we will learn how to find the maximum product quadruple in an array using Python. A subsequence of size 4 is said to be a quadruple.

Example

Input: arr[] = {21, 4, 5, 2, 1, 10}
Output: 4200
Explanation: 21*10*5*4 given the maximum product

Input: arr[] = {-21, -4, -5, -2, -1, -10}
Output: 4200

Maximum product quadruple in Python

Method 1: Using nested loops

In this method, we created four nested loops and calculated the product of every possible quadruple. Finally, returned the maximum product value.

def quadrupleProduct(arr):
    n = len(arr)
    res = -10000
    for i in range(n):
        for j in range(i+1, n):
            for k in range(j+1, n):
                for l in range(k+1, n):
                    if (res < arr[i]*arr[j]*arr[k]*arr[l]):
                        res = arr[i]*arr[j]*arr[k]*arr[l]
    return res 

arr = [21, 4, 5, 2, 1, 10]
print("The maximum product quadruple is: ", quadrupleProduct(arr))

Output

The maximum product quadruple is: 4200

Time Complexity: O(n^4)

Space complexity: O(1)

Method 2: By sorting the array

1. First the sort the given array in ascending.

2. Now the find the product of the last four elements and store its value in p1.

3. Now the find the product of the first four elements and store its value in p2.

4. Now the find the product of the last two elements and the first two elements and store its value in p3.

5. Finally, return the maximum value of p1, p2, p3.

def quadrupleProduct(arr):
    n = len(arr)
    arr.sort()
    p1 = arr[n-1]*arr[n-2]*arr[n-3]*arr[n-4]
    p2 = arr[0]*arr[1]*arr[2]*arr[3]
    p3 = arr[0]*arr[1]*arr[n-1]*arr[n-2]
    return max(p1, p2, p3)

arr = [21, 4, 5, 2, 1, 10]
print("The given array: ", str(arr))
print("The maximum product quadruple is: ", quadrupleProduct(arr))
arr1 = [-21, -4, -5, -2, -1, -10]
print("The given array: ", str(arr1))
print("The maximum product quadruple is: ", quadrupleProduct(arr1))
arr2 = [-12, 18, -15, 4, 3, 10]
print("The given array: ", str(arr2))
print("The maximum product quadruple is: ", quadrupleProduct(arr2))

Output

The given array: [21, 4, 5, 2, 1, 10]
The maximum product quadruple is: 4200
The given array: [-21, -4, -5, -2, -1, -10]
The maximum product quadruple is: 4200
The given array: [-12, 18, -15, 4, 3, 10]
The maximum product quadruple is: 32400

Time complexity: O(n*logn)

Space complexity: O(1)

Also, read

Leave a Reply

Your email address will not be published. Required fields are marked *