Related Articles
Print all pairs with given sum
• Difficulty Level : Easy
• Last Updated : 05 Apr, 2021

Given an array of integers, and a number ‘sum’, print all pairs in the array whose sum is equal to ‘sum’.

```Examples :
Input  :  arr[] = {1, 5, 7, -1, 5},
sum = 6
Output : (1, 5) (7, -1) (1, 5)

Input  :  arr[] = {2, 5, 17, -1},
sum = 7
Output :  (2, 5)```

A simple solution is to traverse each element and check if there’s another number in the array which can be added to it to give sum.

## C++

 `// C++ implementation of simple method to``// find print pairs with given sum.``#include ``using` `namespace` `std;` `// Returns number of pairs in arr[0..n-1]``// with sum equal to 'sum'``int` `printPairs(``int` `arr[], ``int` `n, ``int` `sum)``{``    ``int` `count = 0; ``// Initialize result` `    ``// Consider all possible pairs and check``    ``// their sums``    ``for` `(``int` `i = 0; i < n; i++)``        ``for` `(``int` `j = i + 1; j < n; j++)``            ``if` `(arr[i] + arr[j] == sum)``                ``cout << ``"("` `<< arr[i] << ``", "``                     ``<< arr[j] << ``")"` `<< endl;``}` `// Driver function to test the above function``int` `main()``{``    ``int` `arr[] = { 1, 5, 7, -1, 5 };``    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr[0]);``    ``int` `sum = 6;``    ``printPairs(arr, n, sum);``    ``return` `0;``}`

## Java

 `// Java implementation of``// simple method to find``// print pairs with given sum.` `class` `GFG {` `    ``// Returns number of pairs``    ``// in arr[0..n-1] with sum``    ``// equal to 'sum'``    ``static` `void` `printPairs(``int` `arr[],``                           ``int` `n, ``int` `sum)``    ``{``        ``// int count = 0;` `        ``// Consider all possible pairs``        ``// and check their sums``        ``for` `(``int` `i = ``0``; i < n; i++)``            ``for` `(``int` `j = i + ``1``; j < n; j++)``                ``if` `(arr[i] + arr[j] == sum)``                    ``System.out.println(``"("` `+ arr[i] + ``", "` `+ arr[j] + ``")"``);``    ``}` `    ``// Driver Code``    ``public` `static` `void` `main(String[] arg)``    ``{``        ``int` `arr[] = { ``1``, ``5``, ``7``, -``1``, ``5` `};``        ``int` `n = arr.length;``        ``int` `sum = ``6``;``        ``printPairs(arr, n, sum);``    ``}``}` `// This code is contributed``// by Smitha`

## Python3

 `# Python 3 implementation``# of simple method to find``# print pairs with given sum.` `# Returns number of pairs``# in arr[0..n-1] with sum``# equal to 'sum'``def` `printPairs(arr, n, ``sum``):` `    ``# count = 0` `    ``# Consider all possible``    ``# pairs and check their sums``    ``for` `i ``in` `range``(``0``, n ):``        ``for` `j ``in` `range``(i ``+` `1``, n ):``            ``if` `(arr[i] ``+` `arr[j] ``=``=` `sum``):``                ``print``(``"("``, arr[i],``                      ``", "``, arr[j],``                      ``")"``, sep ``=` `"")`  `# Driver Code``arr ``=` `[``1``, ``5``, ``7``, ``-``1``, ``5``]``n ``=` `len``(arr)``sum` `=` `6``printPairs(arr, n, ``sum``)` `# This code is contributed``# by Smitha`

## C#

 `// C# implementation of simple``// method to find print pairs``// with given sum.``using` `System;` `class` `GFG {``    ``// Returns number of pairs``    ``// in arr[0..n-1] with sum``    ``// equal to 'sum'``    ``static` `void` `printPairs(``int``[] arr,``                           ``int` `n, ``int` `sum)``    ``{``        ``// int count = 0;` `        ``// Consider all possible pairs``        ``// and check their sums``        ``for` `(``int` `i = 0; i < n; i++)``            ``for` `(``int` `j = i + 1; j < n; j++)``                ``if` `(arr[i] + arr[j] == sum)``                    ``Console.Write(``"("` `+ arr[i] + ``", "` `+ arr[j] + ``")"``                                  ``+ ``"\n"``);``    ``}` `    ``// Driver Code``    ``public` `static` `void` `Main()``    ``{``        ``int``[] arr = { 1, 5, 7, -1, 5 };``        ``int` `n = arr.Length;``        ``int` `sum = 6;``        ``printPairs(arr, n, sum);``    ``}``}` `// This code is contributed``// by Smitha`

## PHP

 ``

## Javascript

 ``
Output :
```(1, 5)
(1, 5)
(7, -1)```

Method 2 (Use hashing)
We create an empty hash table. Now we traverse through the array and check for pairs in the hash table. If a matching element is found, we print the pair number of times equal to the number of occurrences of the matching element.
Note that the worst case of time complexity of this solution is O(c + n) where c is the count of pairs with a given sum.

## C++

 `// C++ implementation of simple method to``// find count of pairs with given sum.``#include ``using` `namespace` `std;` `// Returns number of pairs in arr[0..n-1]``// with sum equal to 'sum'``void` `printPairs(``int` `arr[], ``int` `n, ``int` `sum)``{``    ``// Store counts of all elements in map m``    ``unordered_map<``int``, ``int``> m;` `    ``// Traverse through all elements``    ``for` `(``int` `i = 0; i < n; i++) {` `        ``// Search if a pair can be formed with``        ``// arr[i].``        ``int` `rem = sum - arr[i];``        ``if` `(m.find(rem) != m.end()) {``            ``int` `count = m[rem];``            ``for` `(``int` `j = 0; j < count; j++)``                ``cout << ``"("` `<< rem << ``", "``                     ``<< arr[i] << ``")"` `<< endl;``        ``}``        ``m[arr[i]]++;``    ``}``}` `// Driver function to test the above function``int` `main()``{``    ``int` `arr[] = { 1, 5, 7, -1, 5 };``    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr[0]);``    ``int` `sum = 6;``    ``printPairs(arr, n, sum);``    ``return` `0;``}`

## Java

 `// Java implementation of simple method to``// find count of pairs with given sum.``import` `java.util.*;` `class` `GFG{` `// Returns number of pairs in arr[0..n-1]``// with sum equal to 'sum'``static` `void` `printPairs(``int` `arr[], ``int` `n,``                       ``int` `sum)``{``    ` `    ``// Store counts of all elements in map m``    ``HashMap mp = ``new` `HashMap();` `    ``// Traverse through all elements``    ``for``(``int` `i = ``0``; i < n; i++)``    ``{``        ` `        ``// Search if a pair can be formed with``        ``// arr[i].``        ``int` `rem = sum - arr[i];``        ``if` `(mp.containsKey(rem))``        ``{``            ``int` `count = mp.get(rem);``            ` `            ``for``(``int` `j = ``0``; j < count; j++)``                ``System.out.print(``"("` `+ rem +``                                ``", "` `+ arr[i] +``                                 ``")"` `+ ``"\n"``);``        ``}``        ``if` `(mp.containsKey(arr[i]))``        ``{``            ``mp.put(arr[i], mp.get(arr[i]) + ``1``);``        ``}``        ``else``        ``{``            ``mp.put(arr[i], ``1``);``        ``}``    ``}``}` `// Driver code``public` `static` `void` `main(String[] args)``{``    ``int` `arr[] = { ``1``, ``5``, ``7``, -``1``, ``5` `};``    ``int` `n = arr.length;``    ``int` `sum = ``6``;``    ` `    ``printPairs(arr, n, sum);``}``}` `// This code is contributed by Princi Singh`

## Python3

 `# Python3 implementation of simple method to``# find count of pairs with given sum.` `# Returns number of pairs in arr[0..n-1]``# with sum equal to 'sum'``def` `printPairs(arr, n, ``sum``):``    ` `    ``# Store counts of all elements``    ``# in a dictionary``    ``mydict ``=` `dict``()` `    ``# Traverse through all the elements``    ``for` `i ``in` `range``(n):``        ` `        ``# Search if a pair can be``        ``# formed with arr[i]``        ``temp ``=` `sum` `-` `arr[i]``        ` `        ``if` `temp ``in` `mydict:``            ``count ``=` `mydict[temp]``            ``for` `j ``in` `range``(count):``                ``print``(``"("``, temp, ``", "``, arr[i],``                      ``")"``, sep ``=` `"", end ``=` `'\n'``)``                      ` `        ``if` `arr[i] ``in` `mydict:``            ``mydict[arr[i]] ``+``=` `1``        ``else``:``            ``mydict[arr[i]] ``=` `1` `# Driver code``if` `__name__ ``=``=` `'__main__'``:``    ` `    ``arr ``=` `[ ``1``, ``5``, ``7``, ``-``1``, ``5` `]``    ``n ``=` `len``(arr)``    ``sum` `=` `6` `    ``printPairs(arr, n, ``sum``)` `# This code is contributed by MuskanKalra1`

## C#

 `// C# implementation of simple method to``// find count of pairs with given sum.``using` `System;``using` `System.Collections;``using` `System.Collections.Generic;` `class` `GFG{`` ` `// Returns number of pairs in arr[0..n-1]``// with sum equal to 'sum'``static` `void` `printPairs(``int` `[]arr, ``int` `n, ``int` `sum)``{``    ` `    ``// Store counts of all elements in map m``    ``Dictionary<``int``,``               ``int``> m = ``new` `Dictionary<``int``,``                                       ``int``>();``                                       ` `    ``// Traverse through all elements``    ``for``(``int` `i = 0; i < n; i++)``    ``{``        ` `        ``// Search if a pair can be formed with``        ``// arr[i].``        ``int` `rem = sum - arr[i];``        ` `        ``if` `(m.ContainsKey(rem))``        ``{``            ``int` `count = m[rem];``            ` `            ``for``(``int` `j = 0; j < count; j++)``            ``{``                ``Console.Write(``"("` `+ rem + ``", "` `+``                           ``arr[i] + ``")"` `+ ``"\n"``);``            ``}``        ``}``        ` `        ``if` `(m.ContainsKey(arr[i]))``        ``{``            ``m[arr[i]]++;``        ``}``        ``else``        ``{``            ``m[arr[i]] = 1;``        ``}``    ``}``}` `// Driver code``public` `static` `void` `Main(``string``[] args)``{``    ``int` `[]arr = { 1, 5, 7, -1, 5 };``    ``int` `n = arr.Length;``    ``int` `sum = 6;``    ` `    ``printPairs(arr, n, sum);``}``}` `// This code is contributed by rutvik_56`
Output :

```(1, 5)
(7, -1)
(1, 5)```

Method 3
Another method to Print all pairs with the given sum is given as follows:

## C++

 `// C++ code to implement``// the above approach``#include``using` `namespace` `std;` `void` `pairedElements(``int` `arr[],``                    ``int` `sum, ``int` `n)``{``  ``int` `low = 0;``  ``int` `high = n - 1;` `  ``while` `(low < high)``  ``{``    ``if` `(arr[low] + arr[high] == sum)``    ``{``      ``cout << ``"The pair is : ("` `<<``               ``arr[low] << ``", "` `<<``               ``arr[high] << ``")"` `<< endl;``    ``}``    ``if` `(arr[low] + arr[high] > sum)``    ``{``      ``high--;``    ``}``    ``else``    ``{``      ``low++;``    ``}``  ``}``}` `// Driver code``int`  `main()``{``  ``int` `arr[] = {2, 3, 4, -2,``               ``6, 8, 9, 11};``  ``int` `n = ``sizeof``(arr) / ``sizeof``(arr[0]);``  ``sort(arr, arr + n);``  ``pairedElements(arr, 6, n);``}` `// This code is contributed by Rajput-Ji`

## Java

 `import` `java.util.Arrays;` `/**`` ``* Created by sampat.`` ``*/``public` `class` `SumOfPairs {` `    ``public` `void` `pairedElements(``int` `arr[], ``int` `sum)``    ``{``        ``int` `low = ``0``;``        ``int` `high = arr.length - ``1``;` `        ``while` `(low < high) {``            ``if` `(arr[low] + arr[high] == sum) {``                ``System.out.println(``"The pair is : ("``                                   ``+ arr[low] + ``", "` `+ arr[high] + ``")"``);``            ``}``            ``if` `(arr[low] + arr[high] > sum) {``                ``high--;``            ``}``            ``else` `{``                ``low++;``            ``}``        ``}``    ``}` `    ``public` `static` `void` `main(String[] args)``    ``{``        ``int` `arr[] = { ``2``, ``3``, ``4``, -``2``, ``6``, ``8``, ``9``, ``11` `};``        ``Arrays.sort(arr);` `        ``SumOfPairs sp = ``new` `SumOfPairs();``        ``sp.pairedElements(arr, ``6``);``    ``}``}`

## Python3

 `# Python3 program for the``# above approach``def` `pairedElements(arr, ``sum``):``  ` `    ``low ``=` `0``;``    ``high ``=` `len``(arr) ``-` `1``;` `    ``while` `(low < high):``        ``if` `(arr[low] ``+``            ``arr[high] ``=``=` `sum``):``            ``print``(``"The pair is : ("``, arr[low],``                  ``", "``, arr[high], ``")"``);``        ``if` `(arr[low] ``+` `arr[high] > ``sum``):``            ``high ``-``=` `1``;``        ``else``:``            ``low ``+``=` `1``;` `# Driver code``if` `__name__ ``=``=` `'__main__'``:``  ` `    ``arr ``=` `[``2``, ``3``, ``4``, ``-``2``,``           ``6``, ``8``, ``9``, ``11``];``    ``arr.sort();``    ``pairedElements(arr, ``6``);` `# This code contributed by shikhasingrajput`

## C#

 `// C# program to find triplets in a given``// array whose sum is equal to given sum.``using` `System;` `public` `class` `SumOfPairs``{` `    ``public` `void` `pairedElements(``int` `[]arr, ``int` `sum)``    ``{``        ``int` `low = 0;``        ``int` `high = arr.Length - 1;` `        ``while` `(low < high)``        ``{``            ``if` `(arr[low] + arr[high] == sum)``            ``{``                ``Console.WriteLine(``"The pair is : ("``                                ``+ arr[low] + ``", "` `+ arr[high] + ``")"``);``            ``}``            ``if` `(arr[low] + arr[high] > sum)``            ``{``                ``high--;``            ``}``            ``else``            ``{``                ``low++;``            ``}``        ``}``    ``}` `    ``// Driver code``    ``public` `static` `void` `Main(String[] args)``    ``{``        ``int` `[]arr = { 2, 3, 4, -2, 6, 8, 9, 11 };``        ``Array.Sort(arr);` `        ``SumOfPairs sp = ``new` `SumOfPairs();``        ``sp.pairedElements(arr, 6);``    ``}``}` `// This code is contributed by Princi Singh`

## Javascript

 ``
Output :
```The pair is : (-2, 8)
The pair is : (2, 4)```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with industry experts, please refer Geeks Classes Live

My Personal Notes arrow_drop_up