Find pairs in array whose sums already exist in array
Last Updated :
23 Jul, 2024
Given an array of n distinct and positive elements, the task is to find pair whose sum already exists in the given array.
Examples :
Input : arr[] = {2, 8, 7, 1, 5};
Output : 2 5
7 1
Input : arr[] = {7, 8, 5, 9, 11};
Output : Not Exist
A Naive Approach is to run three loops to find pair whose sum exists in an array.
C++
// A simple C++ program to find pair whose sum
// already exists in array
#include <bits/stdc++.h>
using namespace std;
// Function to find pair whose sum exists in arr[]
void findPair(int arr[], int n)
{
bool found = false;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
for (int k = 0; k < n; k++) {
if (arr[i] + arr[j] == arr[k]) {
cout << arr[i] << " " << arr[j] << endl;
found = true;
}
}
}
}
if (found == false)
cout << "Not exist" << endl;
}
// Driven code
int main()
{
int arr[] = { 10, 4, 8, 13, 5 };
int n = sizeof(arr) / sizeof(arr[0]);
findPair(arr, n);
return 0;
}
Java
// A simple Java program to find
// pair whose sum already exists
// in array
import java.io.*;
public class GFG {
// Function to find pair whose
// sum exists in arr[]
static void findPair(int[] arr, int n)
{
boolean found = false;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
for (int k = 0; k < n; k++) {
if (arr[i] + arr[j] == arr[k]) {
System.out.println(arr[i] +
" " + arr[j]);
found = true;
}
}
}
}
if (found == false)
System.out.println("Not exist");
}
// Driver code
static public void main(String[] args)
{
int[] arr = {10, 4, 8, 13, 5};
int n = arr.length;
findPair(arr, n);
}
}
// This code is contributed by vt_m.
Python3
# A simple python program to find pair
# whose sum already exists in array
# Function to find pair whose sum
# exists in arr[]
def findPair(arr, n):
found = False
for i in range(0, n):
for j in range(i + 1, n):
for k in range(0, n):
if (arr[i] + arr[j] == arr[k]):
print(arr[i], arr[j])
found = True
if (found == False):
print("Not exist")
# Driver code
if __name__ == '__main__':
arr = [ 10, 4, 8, 13, 5 ]
n = len(arr)
findPair(arr, n)
# This code contributed by 29AjayKumar
C#
// A simple C# program to find
// pair whose sum already exists
// in array
using System;
public class GFG {
// Function to find pair whose
// sum exists in arr[]
static void findPair(int[] arr, int n)
{
bool found = false;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
for (int k = 0; k < n; k++) {
if (arr[i] + arr[j] == arr[k]) {
Console.WriteLine(arr[i] +
" " + arr[j]);
found = true;
}
}
}
}
if (found == false)
Console.WriteLine("Not exist");
}
// Driver code
static public void Main(String []args)
{
int[] arr = {10, 4, 8, 13, 5};
int n = arr.Length;
findPair(arr, n);
}
}
// This code is contributed by vt_m.
JavaScript
<script>
// A simple Javascript program to find
// pair whose sum already exists
// in array
// Function to find pair whose
// sum exists in arr[]
function findPair(arr,n)
{
let found = false;
for (let i = 0; i < n; i++) {
for (let j = i + 1; j < n; j++) {
for (let k = 0; k < n; k++) {
if (arr[i] + arr[j] == arr[k]) {
document.write(arr[i] +
" " + arr[j]+"<br>");
found = true;
}
}
}
}
if (found == false)
document.write("Not exist");
}
// Driver code
let arr=[10, 4, 8, 13, 5];
let n = arr.length;
findPair(arr, n);
// This code is contributed by patel2127
</script>
PHP
<?php
// A simple php program to
// find pair whose sum
// already exists in array
// Function to find pair whose
// sum exists in arr[]
function findPair($arr, $n)
{
$found = false;
for ($i = 0; $i < $n; $i++)
{
for ($j = $i + 1; $j < $n; $j++)
{
for ($k = 0; $k < $n; $k++)
{
if ($arr[$i] + $arr[$j] == $arr[$k])
{
echo $arr[$i] , " " , $arr[$j] ;
$found = true;
}
}
}
}
if ($found == false)
echo "Not exist" ;
}
// Driver code
$arr = array( 10, 4, 8, 13, 5 );
$n = sizeof($arr) / sizeof($arr[0]);
findPair($arr, $n);
// This code is contributed by nitin mittal.
?>
Time complexity: O(n3)
Auxiliary space: O(1)
An Efficient solution is to store all elements in a hash table (unordered_set in C++) and check one by one all pairs and check its sum exists in set or not. If it exists in the set then print pair. If no pair found in the array then print not exists.
C++
// C++ program to find pair whose sum already
// exists in array
#include <bits/stdc++.h>
using namespace std;
// Function to find pair whose sum exists in arr[]
void findPair(int arr[], int n)
{
// Hash to store all element of array
unordered_set<int> s;
for (int i = 0; i < n; i++)
s.insert(arr[i]);
bool found = false;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
// Check sum already exists or not
if (s.find(arr[i] + arr[j]) != s.end()) {
cout << arr[i] << " " << arr[j] << endl;
found = true;
}
}
}
if (found == false)
cout << "Not exist" << endl;
}
// Driven code
int main()
{
int arr[] = { 10, 4, 8, 13, 5 };
int n = sizeof(arr) / sizeof(arr[0]);
findPair(arr, n);
return 0;
}
Java
// Java program to find pair whose sum
// already exists in array
import java.util.*;
import java.lang.*;
import java.io.*;
class Getpairs {
// Function to find pair whose sum
// exists in arr[]
public static void findPair(int[] arr, int n)
{
/* store all the array elements as a
Hash value*/
HashSet<Integer> s = new HashSet<Integer>();
for (Integer i : arr) {
s.add(i);
}
/* Run two loop and check for the sum
in the Hashset*/
/* if not a single pair exist then found
will be false else true*/
boolean found = false;
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
int sum = arr[i] + arr[j];
if (s.contains(sum)) {
/* if the sum is present in
hashset then found become
true*/
found = true;
System.out.println(arr[i] + " "
+ arr[j]);
}
}
}
if (found == false)
System.out.println("Not Exist ");
}
// driver function
public static void main(String args[])
{
int[] arr = { 10, 4, 8, 13, 5 };
int n = arr.length;
findPair(arr, n);
}
}
// This code is contributed by Smarak Chopdar
Python
# Python3 program to find pair whose
# sum already exist in array
# Function to find pair whose
# sum exists in arr[]
def findPair(arr, n):
# hash to store all element of array
s = {i : 1 for i in arr}
found = False
for i in range(n):
for j in range(i + 1, n):
# check if sum already exists or not
if arr[i] + arr[j] in s.keys():
print(arr[i], arr[j])
found = True
if found == False:
print("Not exist")
# Driver code
arr = [10, 4, 8, 13, 5]
n = len(arr)
findPair(arr, n)
# This code is contributed
# by Mohit Kumar
C#
// C# program to find pair whose sum
// already exists in array
using System;
using System.Collections.Generic;
class Getpairs
{
// Function to find pair whose sum
// exists in arr[]
public static void findPair(int[] arr, int n)
{
/* store all the array elements as a
Hash value*/
HashSet<int> s = new HashSet<int>();
foreach (int i in arr)
{
s.Add(i);
}
/* Run two loop and check for the sum
in the Hashset*/
/* if not a single pair exist then found
will be false else true*/
bool found = false;
for (int i = 0; i < n - 1; i++)
{
for (int j = i + 1; j < n; j++)
{
int sum = arr[i] + arr[j];
if (s.Contains(sum))
{
/* if the sum is present in
hashset then found become
true*/
found = true;
Console.WriteLine(arr[i] + " "
+ arr[j]);
}
}
}
if (found == false)
Console.WriteLine("Not Exist ");
}
// Driver code
public static void Main()
{
int[] arr = { 10, 4, 8, 13, 5 };
int n = arr.Length;
findPair(arr, n);
}
}
// This code contributed by Rajput-Ji
JavaScript
// Javascript program to find pair whose sum
// already exists in array
// Function to find pair whose sum
// exists in arr[]
function findPair(arr, n)
{
/* store all the array elements as a
Hash value*/
let s = new Set();
for (let i = 0; i < arr.length; i++) {
s.add(arr[i]);
}
/* Run two loop and check for the sum
in the Hashset*/
/* if not a single pair exist then found
will be false else true*/
let found = false;
for (let i = 0; i < n - 1; i++) {
for (let j = i + 1; j < n; j++) {
let sum = arr[i] + arr[j];
if (s.has(sum)) {
/* if the sum is present in
hashset then found become
true*/
found = true;
console.log(arr[i] + " " + arr[j] + "<br>");
}
}
}
if (found == false)
console.log("Not Exist ");
}
// driver function
let arr = [ 10, 4, 8, 13, 5 ];
let n = arr.length;
findPair(arr, n);
Time Complexity: O(n2)
Auxiliary Space: O(n)
Similar Reads
Find all pairs with a given sum in two unsorted arrays Given two unsorted arrays of distinct elements, the task is to find all pairs from both arrays whose sum is equal to a given value X.Examples: Input: arr1[] = {-1, -2, 4, -6, 5, 7}, arr2[] = {6, 3, 4, 0} , x = 8Output: 4 4 5 3Input: arr1[] = {1, 2, 4, 5, 7}, arr2[] = {5, 6, 3, 4, 8}, x = 9Output: 1
13 min read
4 Sum - All Distinct Quadruplets with given Sum in an Array Given an array arr[], and an integer target, find all possible unique quadruplets in an array whose sum is equal to the given target value. We can return quadruplets in any order, but all the quadruplets should be internally sorted, i.e., for any quadruplets [q1, q2, q3, q4] the following should fol
15+ min read
Count number of distinct pairs whose sum exists in the given array Given an array of N positive integers. Count the number of pairs whose sum exists in the given array. While repeating pairs will not be counted again. And we can't make a pair using same position element. Eg : (2, 1) and (1, 2) will be considered as only one pair. Please read all examples carefully.
7 min read
Given an absolute sorted array and a number K, find the pair whose sum is K Given an absolute sorted array arr[] and a number target, the task is to find a pair of elements in the given array that sum to target. If no such pair exist in array the return an empty array.An absolute sorted array is an array of numbers in which |arr[i]| <= |arr[j]|, for all i < j.Examples
15+ min read
Find an element in array such that sum of left array is equal to sum of right array Given, an array of size n. Find an element that divides the array into two sub-arrays with equal sums. Examples: Input: 1 4 2 5 0Output: 2Explanation: If 2 is the partition, subarrays are : [1, 4] and [5] Input: 2 3 4 1 4 5Output: 1Explanation: If 1 is the partition, Subarrays are : [2, 3, 4] and [4
15+ min read