Find the smallest contiguous sum pair in an Array
Last Updated :
26 Nov, 2022
Given an array arr[] containing N distinct integers, the task is to find a contiguous pair such that the sum of both elements in the pair is minimum.
Examples:
Input: arr[] = {1, 2, 3, 4}
Output: (1, 2)
Explanation:
Here, contiguous pairs with their sum are (1, 2) = 3, (2, 3) = 5, (3, 4) = 7 and the minimum is 3.
Input: arr[] = {4, 9, -3, 2, 0}
Output: (-3, 2)
Explanation:
Here, contiguous pairs with their sum are (4, 9) = 13, (9, -3) = 6, (-3, 2) = -1, (2, 0) = 2
Approach:
To solve the problem mentioned above, we have to consider all the contiguous pairs and find their sum. The pair having the smallest(minimum) sum is the required answer.
Below is the implementation of the above approach:
C++
#include<bits/stdc++.h>
using namespace std;
vector< int > smallestSumpair( int arr[], int n)
{
vector< int >pair;
int min_sum = INT_MAX;
for ( int i = 1; i < n; i++)
{
if ( min_sum > (arr[i] + arr[i - 1]))
{
min_sum = arr[i] + arr[i - 1];
if (pair.empty())
{
pair.push_back(arr[i - 1]);
pair.push_back(arr[i]);
}
else
{
pair[0] = arr[i - 1];
pair[1] = arr[i];
}
}
}
return pair;
}
int main()
{
int arr[] = {4, 9, -3, 2, 0};
int n = sizeof (arr) / sizeof (arr[0]);
vector< int >pair = smallestSumpair(arr, n);
cout << pair[0] << " " << pair[1];
}
|
Java
import java.util.*;
class GFG{
public static Vector<Integer> smallestSumpair( int [] arr,
int n)
{
Vector<Integer> pair = new Vector<Integer>();
int min_sum = Integer.MAX_VALUE, i;
for (i = 1 ; i < n; i++)
{
if (min_sum > (arr[i] + arr[i - 1 ]))
{
min_sum = arr[i] + arr[i - 1 ];
if (pair.isEmpty())
{
pair.add(arr[i - 1 ]);
pair.add(arr[i]);
}
else
{
pair.set( 0 , arr[i - 1 ]);
pair.set( 1 , arr[i]);
}
}
}
return pair;
}
public static void main(String[] args)
{
int arr[] = { 4 , 9 , - 3 , 2 , 0 };
int N = arr.length;
Vector<Integer> pair = new Vector<Integer>();
pair = smallestSumpair(arr, N);
System.out.println(pair.get( 0 ) + " " +
pair.get( 1 ));
}
}
|
Python3
import sys
def smallestSumpair(arr, n):
pair = []
min_sum = sys.maxsize
for i in range ( 1 , n):
if min_sum > (arr[i] + arr[i - 1 ]):
min_sum = arr[i] + arr[i - 1 ]
if pair = = []:
pair.append(arr[i - 1 ])
pair.append(arr[i])
else :
pair[ 0 ] = arr[i - 1 ]
pair[ 1 ] = arr[i]
return pair
arr = [ 4 , 9 , - 3 , 2 , 0 ]
n = len (arr)
pair = smallestSumpair(arr, n)
print (pair[ 0 ], pair[ 1 ])
|
C#
using System;
using System.Collections;
using System.Collections.Generic;
class GFG{
public static ArrayList smallestSumpair( int [] arr,
int n)
{
ArrayList pair = new ArrayList();
int min_sum = int .MaxValue, i;
for (i = 1; i < n; i++)
{
if (min_sum > (arr[i] + arr[i - 1]))
{
min_sum = arr[i] + arr[i - 1];
if (pair.Count == 0)
{
pair.Add(arr[i - 1]);
pair.Add(arr[i]);
}
else
{
pair[0] = arr[i - 1];
pair[1] = arr[i];
}
}
}
return pair;
}
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]);
}
}
|
Javascript
<script>
function smallestSumpair(arr,n)
{
let pair = [];
let min_sum = Number.MAX_VALUE, i;
for (i = 1; i < n; i++)
{
if (min_sum > (arr[i] + arr[i - 1]))
{
min_sum = arr[i] + arr[i - 1];
if (pair.length==0)
{
pair.push(arr[i - 1]);
pair.push(arr[i]);
}
else
{
pair[0] = arr[i - 1];
pair[1] = arr[i];
}
}
}
return pair;
}
let arr=[4, 9, -3, 2, 0 ];
let N = arr.length;
let pair = smallestSumpair(arr, N);
document.write(pair[0] + " " +
pair[1]);
</script>
|
Time Complexity: O(n)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...