给定一个包含N个不同整数的数组arr [] ,任务是找到一个连续对,以使成对的两个元素之和最小。
例子:
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 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
方法:
为了解决上述问题,我们必须考虑所有连续对并找到它们的和。具有最小(最小)和的对是必需的答案。
下面是上述方法的实现:
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
输出
-3 2
时间复杂度: O(n)