📜  最小乘积对为正整数数组

📅  最后修改于: 2021-05-04 08:46:00             🧑  作者: Mango

给定正整数数组。我们需要编写一个程序来打印给定数组的任何两个数字的最小乘积。
例子:

Input : 11 8 5 7 5 100
Output : 25 
Explanation : The minimum product of any 
two numbers will be 5 * 5 = 25.

Input : 198 76 544 123 154 675 
Output : 7448
Explanation : The minimum product of any 
two numbers will be 76 * 123 = 7448.

简单方法:一个简单的方法是运行两个嵌套循环以生成所有可能的元素对并跟踪最小乘积。
时间复杂度:O(n * n)
辅助空间:O(1)
更好的方法:一种有效的方法是首先对给定的数组进行排序并打印前两个数字的乘积,排序将花费O(n log n)。答案将是a [0] * a [1]
时间复杂度:O(n * log(n))
辅助空间:O(1)
最佳方法:该想法是线性遍历给定数组并跟踪最少两个元素。最后返回两个最小元素的乘积。
下面是上述方法的实现。

C++
// C++ program to calculate minimum
// product of a pair
#include 
using namespace std;
 
// Function to calculate minimum product
// of pair
int printMinimumProduct(int arr[], int n)
{
    // Initialize first and second
    // minimums. It is assumed that the
    // array has at least two elements.
    int first_min = min(arr[0], arr[1]);
    int second_min = max(arr[0], arr[1]);
 
    // Traverse remaining array and keep
    // track of two minimum elements (Note
    // that the two minimum elements may
    // be same if minimum element appears
    // more than once)
    // more than once)
    for (int i=2; i


Java
// Java program to calculate minimum
// product of a pair
import java.util.*;
 
class GFG {
     
    // Function to calculate minimum product
    // of pair
    static int printMinimumProduct(int arr[], int n)
    {
        // Initialize first and second
        // minimums. It is assumed that the
        // array has at least two elements.
        int first_min = Math.min(arr[0], arr[1]);
        int second_min = Math.max(arr[0], arr[1]);
      
        // Traverse remaining array and keep
        // track of two minimum elements (Note
        // that the two minimum elements may
        // be same if minimum element appears
        // more than once)
        // more than once)
        for (int i = 2; i < n; i++)
        {
           if (arr[i] < first_min)
           {
              second_min = first_min;
              first_min = arr[i];
           }
           else if (arr[i] < second_min)
              second_min = arr[i];
        }
      
        return first_min * second_min;
    }
     
    /* Driver program to test above function */
    public static void main(String[] args)
    {
        int a[] = { 11, 8 , 5 , 7 , 5 , 100 };
        int n = a.length;
        System.out.print(printMinimumProduct(a,n));
      
    }
}
 
// This code is contributed by Arnav Kr. Mandal.


Python3
# Python program to
# calculate minimum
# product of a pair
 
# Function to calculate
# minimum product
# of pair
def printMinimumProduct(arr,n):
 
    # Initialize first and second
    # minimums. It is assumed that the
    # array has at least two elements.
    first_min = min(arr[0], arr[1])
    second_min = max(arr[0], arr[1])
  
    # Traverse remaining array and keep
    # track of two minimum elements (Note
    # that the two minimum elements may
    # be same if minimum element appears
    # more than once)
    # more than once)
    for i in range(2,n):
     
         if (arr[i] < first_min):
        
            second_min = first_min
            first_min = arr[i]
        
         elif (arr[i] < second_min):
            second_min = arr[i]
     
    return first_min * second_min
 
# Driver code
 
a= [ 11, 8 , 5 , 7 , 5 , 100 ]
n = len(a)
 
print(printMinimumProduct(a,n))
 
# This code is contributed
# by Anant Agarwal.


C#
// C# program to calculate minimum
// product of a pair
using System;
 
class GFG {
     
    // Function to calculate minimum
    // product of pair
    static int printMinimumProduct(int []arr,
                                       int n)
    {
         
        // Initialize first and second
        // minimums. It is assumed that
        // the array has at least two
        // elements.
        int first_min = Math.Min(arr[0],
                                    arr[1]);
                                     
        int second_min = Math.Max(arr[0],
                                    arr[1]);
     
        // Traverse remaining array and
        // keep track of two minimum
        // elements (Note that the two
        // minimum elements may be same
        // if minimum element appears
        // more than once)
        for (int i = 2; i < n; i++)
        {
            if (arr[i] < first_min)
            {
                second_min = first_min;
                first_min = arr[i];
            }
            else if (arr[i] < second_min)
                second_min = arr[i];
        }
     
        return first_min * second_min;
    }
     
    /* Driver program to test above
    function */
    public static void Main()
    {
        int []a = { 11, 8 , 5 , 7 ,
                            5 , 100 };
        int n = a.Length;
         
        Console.WriteLine(
            printMinimumProduct(a, n));
    }
}
 
// This code is contributed by vt_m.


PHP


Javascript


输出:

25