Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Pair with given sum in matrix

  • Difficulty Level : Easy
  • Last Updated : 23 May, 2021

Given a NxM matrix and a sum S. The task is to check if a pair with given Sum exists in the matrix or not.
Examples
 

Input: mat[N][M] = {{1, 2, 3, 4},
                {5, 6, 7, 8},
                {9, 10, 11, 12},
                {13, 14, 15, 16}};
       sum = 31
Output: YES

Input: mat[N][M] = {{1, 2, 3, 4},
                {5, 6, 7, 8}};
       sum = 150
Output: NO

 

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 experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

Approach: 
 



  • Take a hash to store all elements of the matrix in the hash.
  • Start traversing through the matrix, and while traversing check if abs(sum-matrix_element) is present in the hash.
  • If present, then return true, else insert the current matrix element into the hash.
  • If all elements of the matrix are traversed and no pair is found, return false.

Below is the implementation of the above approach: 
 

C++




// CPP code to check for pair with given sum
#include <bits/stdc++.h>
using namespace std;
 
#define N 4
#define M 4
 
// Function to check if a pair with given sum
// exists in the matrix
bool isPairWithSum(int mat[N][M], int sum)
{
    // hash to store elements
    unordered_set<int> s;
 
    // looping through elements
    // if present in the matrix
    // return true, else push
    // the element in matrix
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++) {
            if (s.find(sum - mat[i][j]) != s.end()) {
                return true;
            }
            else {
                s.insert(mat[i][j]);
            }
        }
    }
 
    return false;
}
 
// Driver code
int main()
{
 
    // Input matrix
    int mat[N][M] = { { 1, 2, 3, 4 },
                      { 5, 6, 7, 8 },
                      { 9, 10, 11, 12 },
                      { 13, 14, 15, 16 } };
 
    // given sum
    int sum = 11;
 
    if (isPairWithSum(mat, sum)) {
        cout << "YES" << endl;
    }
    else
        cout << "NO" << endl;
 
    return 0;
}

Java




// Java code to check for pair
// with given sum
import java.util.*;
 
class GFG
{
     
// Function to check if a pair with
// given sum exists in the matrix
static final int N = 4;
static final int M = 4;
static boolean isPairWithSum(int [][]mat,
                             int sum)
{
    // hash to store elements
    Set<Integer> s = new HashSet<Integer>();
 
    // looping through elements
    // if present in the matrix
    // return true, else push
    // the element in matrix
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            if (s.contains(sum - mat[i][j]))
            {
                return true;
            }
            else
            {
                s.add(mat[i][j]);
            }
        }
    }
 
    return false;
}
 
// Driver code
public static void main(String []args)
{
 
    // Input matrix
    int [][]mat = { { 1, 2, 3, 4 },
                    { 5, 6, 7, 8 },
                    { 9, 10, 11, 12 },
                    { 13, 14, 15, 16 } };
 
    // given sum
    int sum = 11;
 
    if (isPairWithSum(mat, sum))
    {
        System.out.println("YES");
    }
    else
        System.out.println("NO");
}
}
 
// This code is contributed by ihritik

C#




// C# code to check for pair
// with given sum
using System;
using System.Collections.Generic;
 
class GFG
{
     
// Function to check if a pair with
// given sum exists in the matrix
static readonly int N = 4;
static readonly int M = 4;
static bool isPairWithSum(int [,]mat,
                            int sum)
{
    // hash to store elements
    HashSet<int> s = new HashSet<int>();
 
    // looping through elements
    // if present in the matrix
    // return true, else push
    // the element in matrix
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            if (s.Contains(sum - mat[i, j]))
            {
                return true;
            }
            else
            {
                s.Add(mat[i, j]);
            }
        }
    }
    return false;
}
 
// Driver code
public static void Main(String []args)
{
 
    // Input matrix
    int [,]mat = { { 1, 2, 3, 4 },
                    { 5, 6, 7, 8 },
                    { 9, 10, 11, 12 },
                    { 13, 14, 15, 16 } };
 
    // given sum
    int sum = 11;
 
    if (isPairWithSum(mat, sum))
    {
        Console.WriteLine("YES");
    }
    else
        Console.WriteLine("NO");
}
}
 
// This code contributed by Rajput-Ji

Python3




# python code to check for pair with given sum
 
N= 4
M= 4
 
# Function to check if a pair with given sum
# exists in the matrix
def isPairWithSum(mat, sum):
    # hash to store elements
    s = set()
 
    # looping through elements
    # if present in the matrix
    # return true, else push
    # the element in matrix
    for i in range(N):
        for j in range(M):
            if (sum - mat[i][j]) in s :
                return True
             
            else :
                s.add(mat[i][j])
             
    return False
 
 
# Driver code
if __name__ == '__main__':
 
    # Input matrix
    mat = [[ 1, 2, 3, 4 ],
                    [ 5, 6, 7, 8] ,
                    [ 9, 10, 11, 12] ,
                    [13, 14, 15, 16]] 
 
    # given sum
    sum = 11
 
    if (isPairWithSum(mat, sum)) :
        print("YES")
     
    else:
        print("NO")
 
     
# This code is contributed by AbhiThakur

PHP




<?php
// PHP code to check for pair with given sum
  
$N = 4;
$M = 4;
  
// Function to check if a pair with given sum
// exists in the matrix
function isPairWithSum(&$mat, $sum)
{
    global $N,$M;
    // array to store elements
    $s = array();
  
    // looping through elements
    // if present in the matrix
    // return true, else push
    // the element in matrix
    for ($i = 0; $i < $N; $i++) {
        for ($j = 0; $j < $M; $j++) {
            if (in_array($sum - $mat[$i][$j],$s) != end($s)) {
                return true;
            }
            else {
                array_push($s,$mat[$i][$j]);
            }
        }
    }
  
    return false;
}
  
// Driver code
 
    // Input matrix
    $mat = array(array( 1, 2, 3, 4 ),
                 array( 5, 6, 7, 8 ),
                 array( 9, 10, 11, 12 ),
                 array(13, 14, 15, 16 ));
  
    // given sum
    $sum = 11;
  
    if (isPairWithSum($mat, $sum)) {
        echo "YES" ."\n";
    }
    else
        echo "NO" ."\n";
  
    return 0;
?>

Javascript




<script>
// Javascript code to check for pair
// with given sum
     
    // Function to check if a pair with
// given sum exists in the matrix
    let N = 4;
    let M = 4;
     
    function isPairWithSum(mat,sum)
    {
        // hash to store elements
    let s = new Set();
   
    // looping through elements
    // if present in the matrix
    // return true, else push
    // the element in matrix
    for (let i = 0; i < N; i++)
    {
        for (let j = 0; j < M; j++)
        {
            if (s.has(sum - mat[i][j]))
            {
                return true;
            }
            else
            {
                s.add(mat[i][j]);
            }
        }
    }
   
    return false;
    }
     
    // Driver code
     
    // Input matrix
    let mat = [[ 1, 2, 3, 4 ],
                    [ 5, 6, 7, 8] ,
                    [ 9, 10, 11, 12] ,
                    [13, 14, 15, 16]] ;
 
    // given sum
    let sum = 11;
   
    if (isPairWithSum(mat, sum))
    {
        document.write("YES");
    }
    else
        document.write("NO");
     
 
// This code is contributed by rag2127
</script>
Output: 
YES

 

Time Complexity: O(N*M)
 




My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!