Number of Pairs which sum equal to the target

Number of Pairs which sum equal to the target

Question:

Find the Number of Pairs which sum is equal to the given target

Example:

[1, 5, 4, 3, 3, 7, 1, 2]

Target = 6

Output: 4    Pairs (1,5) (5,1) (4,2) (3,3)

Number of Pairs in an array:

Number of Pairs

Approach 1:

Logic:

  • Initialise the Hash-Map
  • Check the element in Hash-Map which is subtracted the from array element with target value
  • If element found then get the value of the key from Hash-Map and add into the count
  • Otherwise insert element into the Hash-Map with value of 1
  • If already present increment the key’s value
  • At last print the count of pairs present in array

Explanation:

Program:

Java:

[code lang=”java”]

import java.util.HashMap;

public class FindTargetPairInArray{

static void findTargetPairInArray(int array[], int target)
{
HashMap<Integer,Integer> element = new HashMap<>();

int length = array.length;
int count = 0;
int value = 0;

for (int i = 0; i < length; i++) {

if (element.containsKey(target – array[i])) {

//add the count with value of HashMap
count += element.get(target – array[i]);
value = element.get(target – array[i]);

//Print the pairs
while(value != 0)
{
System.out.println("(" + array[i] + ", " +(target – array[i])+")");
value–;

}

}
//Insert the key into the HashMap
if(element.containsKey(array[i])){
element.put(array[i], element.get(array[i])+1);
}
else{
element.put(array[i], 1);
}
}

System.out.println("Count of pairs: "+ count );

}

public static void main(String[] args)
{
int array[] = { 1, 5, 4, 3, 3, 7, 1, 2};
int target = 6;

findTargetPairInArray(array, target);
}
}
[/code]

 

Approach 2:

Logic:

  • Check the element is greater than or equal to target
  • If yes then no need to do below operations, continue with next element
  • Add every element with every other element in the array
  • Then check the value equal to target or not
  • If yes increment the count and at last print the Number of Pairs

Explanation:

Program:

C:

[code lang=”c”]
#include <stdio.h>

void main()
{
int arr[] = { 1, 5, 4, 3, 3, 7, 1, 2};
int target = 6;
int count = 0;

int length = sizeof(arr)/sizeof(arr[0]);

//Check the pairs
for(int i = 0; i < length – 1; i++)
{

//skip if element is greater than or equal to target
if(arr[i] >= target)
continue;

for(int j = i + 1; j < length; j++)
{
if(arr[i] + arr[j] == target)
{
count++;
printf("(%d %d)", arr[i], arr[j]);
}
}
}

printf("\nCount of pairs: %d",count);
}
[/code]

 

You Might also like:

Check for a pair in array which is equal to sum

HashMap

Vignesh

A Computer Science graduate who likes to make things simpler. When he’s not working, you can find him surfing the web, learning facts, tricks and life hacks. He also enjoys movies in his leisure time.

Leave a Reply

Your email address will not be published. Required fields are marked *