Product of maximum in first array and minimum in second

Last Updated : 15 Apr, 2026

Given two arrays, calculate the product of max element of first array and min element of second array.

Examples : 

Input : arr1[] = {5, 7, 9, 3, 6, 2},
arr2[] = {1, 2, 6, -1, 0, 9}
Output : Max in first array is 9, min in second is -1, so product = -9.

Input : arr1[] = {1, 4, 2, 3, 10, 2},
arr2[] = {4, 2, 6, 5, 2, 9}
Output : Max in first array is 10, min in second is 2, so product = 20.

Try It Yourself
redirect icon

[Naive Approach] Using Sorting - O(n log n + m log m) Time and O(1) Space

We first sort both arrays. Then we easily find max in first array and min in second array. Finally, we return product of min and max. 

C++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int minMaxProduct(vector<int> &arr1, vector<int> &arr2)
{
    // Sort both vectors
    sort(arr1.begin(), arr1.end());
    sort(arr2.begin(), arr2.end());

    // Return product of max of arr1 and min of arr2
    return arr1.back() * arr2.front();
}

int main()
{
    vector<int> arr1 = {10, 2, 3, 6, 4, 1};
    vector<int> arr2 = {5, 1, 4, 2, 6, 9};

    cout << minMaxProduct(arr1, arr2);

    return 0;
}
Java
import java.util.*;

class gfg {
    
    static int minMaxProduct(ArrayList<Integer> arr1, ArrayList<Integer> arr2) {
        
        // Sort the arrays to find 
        // the maximum and minimum 
        // elements in given arrays
        Collections.sort(arr1);
        Collections.sort(arr2);

        // Return product of
        // maximum and minimum.
        return arr1.get(arr1.size() - 1) * arr2.get(0);
    }
    
    public static void main(String[] args) {
        ArrayList<Integer> arr1 = new ArrayList<>(Arrays.asList(10, 2, 3, 6, 4, 1));
        ArrayList<Integer> arr2 = new ArrayList<>(Arrays.asList(5, 1, 4, 2, 6, 9));
        
        System.out.println(minMaxProduct(arr1, arr2));
    }
}
Python
def minMaxProduct(arr1, arr2):

    # Sort the arrays to find 
    # the maximum and minimum 
    # elements in given arrays
    arr1.sort()
    arr2.sort()

    # Return product of
    # maximum and minimum.
    return arr1[-1] * arr2[0]


arr1 = [10, 2, 3, 6, 4, 1]
arr2 = [5, 1, 4, 2, 6, 9]

print(minMaxProduct(arr1, arr2))
C#
using System;
using System.Collections.Generic;

class Program
{
    static int MinMaxProduct(List<int> arr1, List<int> arr2)
    {
        // Sort the arrays to find 
        // the maximum and minimum 
        // elements in given arrays
        arr1.Sort();
        arr2.Sort();

        // Return product of
        // maximum and minimum.
        return arr1[arr1.Count - 1] * arr2[0];
    }

    static void Main()
    {
        List<int> arr1 = new List<int> { 10, 2, 3, 6, 4, 1 };
        List<int> arr2 = new List<int> { 5, 1, 4, 2, 6, 9 };

        Console.WriteLine(MinMaxProduct(arr1, arr2));
    }
}
JavaScript
function minMaxProduct(arr1, arr2) {

    // Sort the arrays to find 
    // the maximum and minimum 
    // elements in given arrays
    arr1.sort((a, b) => a - b);
    arr2.sort((a, b) => a - b);

    // Return product of
    // maximum and minimum.
    return arr1[arr1.length - 1] * arr2[0];
}

const arr1 = [10, 2, 3, 6, 4, 1];
const arr2 = [5, 1, 4, 2, 6, 9];


// Driver code
console.log(minMaxProduct(arr1, arr2));

Output
10

[Expected Approach] Using for loop - O(n + m) Time and O(1) Space

Traverse the first array to find its maximum element and the second array to find its minimum element. Multiply these two values to get the final result.

C++
#include <iostream>
#include <vector>
using namespace std;

int minMaxProduct(vector<int> &arr1, vector<int> &arr2)
{
    int maxi = arr1[0];
    int mini = arr2[0];

    // Find max in arr1
    for (int i = 1; i < arr1.size(); i++)
        if (arr1[i] > maxi)
            maxi = arr1[i];

    // Find min in arr2
    for (int i = 1; i < arr2.size(); i++)
        if (arr2[i] < mini)
            mini = arr2[i];

    return maxi * mini;
}

int main()
{
    vector<int> arr1 = {10, 2, 3, 6, 4, 1};
    vector<int> arr2 = {5, 1, 4, 2, 6, 9};

    cout << minMaxProduct(arr1, arr2) << endl;

    return 0;
}
Java
import java.util.*;

class GfG {

    static int minMaxProduct(ArrayList<Integer> arr1, ArrayList<Integer> arr2)
    {
        int maxi = arr1.get(0);

        int mini = arr2.get(0);

        // Find the maximum 
        // element in first array
        for (int i = 1; i < arr1.size(); i++)
            if (arr1.get(i) > maxi)
                maxi = arr1.get(i);

        // Find the minimum 
        // element in second array
        for (int i = 1; i < arr2.size(); i++)
            if (arr2.get(i) < mini)
                mini = arr2.get(i);

        return maxi * mini;
    }

    public static void main(String[] args)
    {
        ArrayList<Integer> arr1 = new ArrayList<>(Arrays.asList(10, 2, 3, 6, 4, 1));
        ArrayList<Integer> arr2 = new ArrayList<>(Arrays.asList(5, 1, 4, 2, 6, 9));

        System.out.println(minMaxProduct(arr1, arr2));
    }
}
Python
def minMaxProduct(arr1, arr2):

    maxi = arr1[0]
    mini = arr2[0]

    # Find the maximum 
    # element in first array
    for i in range(1, len(arr1)):
        if arr1[i] > maxi:
            maxi = arr1[i]

    # Find the minimum 
    # element in second array
    for i in range(1, len(arr2)):
        if arr2[i] < mini:
            mini = arr2[i]

    return maxi * mini


arr1 = [10, 2, 3, 6, 4, 1]
arr2 = [5, 1, 4, 2, 6, 9]

print(minMaxProduct(arr1, arr2))
C#
using System;
using System.Collections.Generic;

class GfG
{
    static int MinMaxProduct(List<int> arr1, List<int> arr2)
    {
        int maxi = arr1[0];
        int mini = arr2[0];

        // Find the maximum 
        // element in first array
        for (int i = 1; i < arr1.Count; i++)
            if (arr1[i] > maxi)
                maxi = arr1[i];

        // Find the minimum 
        // element in second array
        for (int i = 1; i < arr2.Count; i++)
            if (arr2[i] < mini)
                mini = arr2[i];

        return maxi * mini;
    }

    static void Main()
    {
        List<int> arr1 = new List<int> { 10, 2, 3, 6, 4, 1 };
        List<int> arr2 = new List<int> { 5, 1, 4, 2, 6, 9 };

        Console.WriteLine(MinMaxProduct(arr1, arr2));
    }
}
JavaScript
function minMaxProduct(arr1, arr2)
{
    let maxi = arr1[0];
    let mini = arr2[0];

    // Find the maximum 
    // element in first array
    for (let i = 1; i < arr1.length; i++)
        if (arr1[i] > maxi)
            maxi = arr1[i];

    // Find the minimum 
    // element in second array
    for (let i = 1; i < arr2.length; i++)
        if (arr2[i] < mini)
            mini = arr2[i];

    return maxi * mini;
}

// driver code
const arr1 = [10, 2, 3, 6, 4, 1];
const arr2 = [5, 1, 4, 2, 6, 9];

console.log(minMaxProduct(arr1, arr2));

Output
10
Comment