📜  查找数组中最小的连续和对

📅  最后修改于: 2021-09-06 06:44:10             🧑  作者: Mango

给定一个包含N 个不同整数的数组 arr[] ,任务是找到一个连续对,使得该对中两个元素的总和最小。

例子:

方法:
为了解决上面提到的问题,我们必须考虑所有连续对并找到它们的总和。具有最小(最小)和的对是所需答案。
下面是上述方法的实现:

C++
//C++ program to find the smallest
// sum contiguous pair
#include
using namespace std;
  
// Function to find the smallest sum
// contiguous pair
vector smallestSumpair(int arr[], int n)
{
 
    // Contiguous pair
    vectorpair;
 
    // isntialize minimum sum
    // with maximum value
    int min_sum = INT_MAX;
 
    for(int i = 1; i < n; i++)
    {
 
        // Checking for minimum value
        if( min_sum > (arr[i] + arr[i - 1]))
        {
            min_sum = arr[i] + arr[i - 1];
            if (pair.empty())
            {
 
                // Add to pair
                pair.push_back(arr[i - 1]);
                pair.push_back(arr[i]);
            }
            else
            {
 
                // Updating pair
                pair[0] = arr[i - 1];
                pair[1] = arr[i];
            }
        }
    }
    return pair;
}
  
// Driver code
int main()
{
   int arr[] = {4, 9, -3, 2, 0};
   int n = sizeof(arr) / sizeof(arr[0]);
   
   vectorpair = smallestSumpair(arr, n);
   cout << pair[0] << " " << pair[1];
}
 
// This code is contributed by chitranayal


Java
// Java program to find the smallest
// sum contiguous pair
import java.util.*;
 
class GFG{
     
// Function to find the smallest sum
// contiguous pair
public static Vector smallestSumpair(int[] arr,
                                              int n)
{
     
    // Stores the contiguous pair
    Vector pair = new Vector();
     
    // Intialize minimum sum
    int min_sum = Integer.MAX_VALUE, i;
     
    for(i = 1; i < n; i++)
    {
         
        // Checking for minimum value
        if (min_sum > (arr[i] + arr[i - 1]))
        {
            min_sum = arr[i] + arr[i - 1];
             
            if (pair.isEmpty())
            {
                 
                // Add to pair
                pair.add(arr[i - 1]);
                pair.add(arr[i]);
            }
            else
            {
                 
                // Updating pair
                pair.set(0, arr[i - 1]);
                pair.set(1, arr[i]);
            }
        }
    }
    return pair;
}
 
// Driver Code        
public static void main(String[] args)
{
    int arr[] = { 4, 9, -3, 2, 0 };
    int N = arr.length;
     
    Vector pair = new Vector();
    pair = smallestSumpair(arr, N);
     
    System.out.println(pair.get(0) + " " +
                       pair.get(1));
}
}
 
// This code is contributed by divyeshrabadiya07


Python3
# Python3 program to find the smallest
# sum contiguous pair
 
# importing sys
import sys
 
# Function to find the smallest sum
# contiguous pair
 
 
def smallestSumpair(arr, n):
 
    # Contiguous pair
    pair = []
 
    # isntialize minimum sum
    # with maximum value
    min_sum = sys.maxsize
 
    for i in range(1, n):
 
        # checking for minimum value
        if min_sum > (arr[i] + arr[i-1]):
            min_sum = arr[i] + arr[i-1]
 
            if pair == []:
 
                # Add to pair
                pair.append(arr[i-1])
                pair.append(arr[i])
            else:
 
                # Updating pair
                pair[0] = arr[i-1]
                pair[1] = arr[i]
 
    return pair
 
 
# Driver code
arr = [4, 9, -3, 2, 0]
n = len(arr)
pair = smallestSumpair(arr, n)
print(pair[0], pair[1])


C#
// C# program to find the smallest
// sum contiguous pair
using System;
using System.Collections;
using System.Collections.Generic;
 
class GFG{
 
// Function to find the smallest sum
// contiguous pair
public static ArrayList smallestSumpair(int[] arr,
                                        int n)
{
     
    // Stores the contiguous pair
    ArrayList pair = new ArrayList();
     
    // Intialize minimum sum
    int min_sum = int.MaxValue, i;
     
    for(i = 1; i < n; i++)
    {
         
        // Checking for minimum value
        if (min_sum > (arr[i] + arr[i - 1]))
        {
            min_sum = arr[i] + arr[i - 1];
             
            if (pair.Count == 0)
            {
                 
                // Add to pair
                pair.Add(arr[i - 1]);
                pair.Add(arr[i]);
            }
            else
            {
                 
                // Updating pair
                pair[0] = arr[i - 1];
                pair[1] = arr[i];
            }
        }
    }
    return pair;
}
 
// Driver code
public static void Main(string[] args)
{
    int []arr = { 4, 9, -3, 2, 0 };
    int N = arr.Length;
     
    ArrayList pair = new ArrayList();
    pair = smallestSumpair(arr, N);
     
    Console.Write(pair[0] + " " + pair[1]);
}
}
 
// This code is contributed by rutvik_56


Javascript


输出

-3 2

时间复杂度: O(n)

如果您想与行业专家一起参加直播课程,请参阅Geeks Classes Live