Skip to content
Related Articles

Related Articles

Improve Article

Check if a pair with given absolute difference exists in a Matrix

  • Difficulty Level : Medium
  • Last Updated : 29 May, 2021
Geek Week

Given an N×M matrix and a difference K. The task is to check if a pair with the given absolute difference 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, 100}};
       K = 85
Output: YES

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

Approach:  

  • Initialize a hash-map to keep track of already visited elements of the matrix.
  • Iterate over the matrix and check if the difference between the current element and k is already present in the hash-map. If yes then the current element and the difference between the elements and k are the desired pair.
  • Otherwise, add the current element to the map.

Below is the implementation of the above approach:

C++




// CPP code to check for pair with given
// difference exists in the matrix or not
 
#include <bits/stdc++.h>
using namespace std;
 
#define N 4
#define M 4
 
// Function to check if a pair with given
// difference exists in the matrix
bool isPairWithDiff(int mat[N][M], int k)
{
    unordered_set <int> ump ;
    
    // Loop to iterate over the matrix
    for( int i = 0 ; i < N  ; i++ )
    {
        for( int j =0 ; j < M ; j++ )
        {
            if( mat[i][j] > k )
            {
                int m = mat[i][j] - k ;
                 
                if( ump.find(m) != ump.end() )
                {
                    return true ;
                }
            }
            else
            {
                int m = k - mat[i][j] ;
                 
                if( ump.find(m) != ump.end() )
                {
                    return true ;
                }
            }
            ump.insert(mat[i][j]);
        }
    }
  return false;
}
 
// Driver Code
int main()
{
    // Input matrix
    int mat[N][M] ={ { 5, 2, 3, 4 },
                    { 5, 6, 7, 8 },
                    { 9, 10, 11, 12 },
                    { 13, 14, 15, 100 } };
 
    // Given difference
    int k = 85;
 
    if (isPairWithDiff(mat, k))
        cout << "YES" << endl;    
    else
        cout << "NO" << endl;
 
    return 0;
}

Java




// Java code to check for pair with given
// difference exists in the matrix or not
import java.util.*;
 
class GFG
{
 
static final int N = 4;
static final int M = 4;
 
// Function to check if a pair with given
// difference exists in the matrix
static boolean isPairWithDiff(int mat[][], int k)
{
    // Store elements in a hash
    HashSet<Integer> s = new HashSet<Integer>();
   
    // Loop to iterate over the
    // elements of the matrix
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++) {
            if( mat[i][j] > k )
            {
                int m = mat[i][j] - k ;
                 
                if(s.contains(m))
                {
                    return true ;
                }
            }
            else
            {
                int m = k - mat[i][j] ;
                 
                if(s.contains(m))
                {
                    return true ;
                }
            }
            s.add(mat[i][j]);    
        }
    
             
    return false;
}
 
// Driver Code
public static void main(String[] args)
{
    // Input matrix
    int mat[][] = { { 5, 2, 3, 4 },
                    { 5, 6, 7, 8 },
                    { 9, 10, 11, 12 },
                    { 13, 14, 15, 100 } };
 
    // Given difference
    int k = 85;
 
    System.out.println(
      isPairWithDiff(mat, k) == true ?
      "YES" : "NO");
}
}
 
// This code contributed by Rajput-Ji

Python3




# Python 3 program to check for pairs
# with given difference exits in the
# matrix or not
N = 4
M = 4
 
# Function to check if a
# pair with given
# difference exist in the matrix
def isPairWithDiff(mat, k):
     
    # Store elements in a hash
    s = set()
     
    # Store elements in dict
    for i in range(N):
        for j in range(M):
            if mat[i][j] > k:
                m = mat[i][j] - k
                if m in s:
                    return True
            else:
                m = k - mat[i][j]
                if m in s:
                    return True
            s.add(mat[i][j])
     
    return False       
     
# Driver Code
n, m = 4, 4
mat = [[5, 2, 3, 4],
       [5, 6, 7, 8],
       [9, 10, 11, 12],
       [13, 14, 15, 100]]
     
# given difference
k = 85
 
if isPairWithDiff(mat, k):
    print("Yes")
else:
    print("No")
 
# This code is contributed by
# Mohit kumar 29 (IIIT gwalior)

C#




// C# code to check for pair with given
// difference exists in the matrix or not
using System;
using System.Collections.Generic;
     
class GFG
{
 
static int N = 4;
static int M = 4;
 
// Function to check if a pair with given
// difference exists in the matrix
static Boolean isPairWithDiff(
             int [,]mat, int k)
{
    // Store elements in a hash
    HashSet<int> s = new HashSet<int>();
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            if( mat[i, j] > k )
            {
                int m = mat[i, j] - k ;
                 
                if(s.Contains(m))
                {
                    return true ;
                }
            }
            else
            {
                int m = k - mat[i, j];
                 
                if(s.Contains(m))
                {
                    return true ;
                }
            }
            s.Add(mat[i, j]);  
        }
    }
             
    return false;
}
 
// Driver Code
public static void Main(String[] args)
{
    // Input matrix
    int [,]mat = { { 5, 2, 3, 4 },
                    { 5, 6, 7, 8 },
                    { 9, 10, 11, 12 },
                    { 13, 14, 15, 100 } };
 
    // Given difference
    int k = 85;
 
    Console.WriteLine(
      isPairWithDiff(mat, k) == true ?
      "YES" : "NO");
}
}
 
/* This code contributed by PrinciRaj1992 */

Javascript




<script>
// Javascript code to check for pair with given
// difference exists in the matrix or not
 
let N = 4;
let M = 4;
 
// Function to check if a pair with given
// difference exists in the matrix
function isPairWithDiff(mat,k)
{
    // Store elements in a hash
    let s = [];
    
    // Loop to iterate over the
    // elements of the matrix
    for (let i = 0; i < N; i++)
    {
        for (let j = 0; j < M; j++) {
            if( mat[i][j] > k )
            {
                let m = mat[i][j] - k ;
                  
                if(s.includes(m))
                {
                    return true ;
                }
            }
            else
            {
                let m = k - mat[i][j] ;
                  
                if(s.includes(m))
                {
                    return true ;
                }
            }
            s.push(mat[i][j]);   
        }
    }
              
    return false;
}
 
// Driver Code
 // Input matrix
let mat = [[5, 2, 3, 4],
              [5, 6, 7, 8],
              [9, 10, 11, 12],
             [13, 14, 15, 100]];
 
// Given difference
let k = 85;
document.write(
      isPairWithDiff(mat, k) == true ?
      "YES" : "NO");
 
 
// This code is contributed by patel2127
</script>
Output
YES

Time Complexity: O(N*M)
Auxiliary Space: O(N*M)

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.




My Personal Notes arrow_drop_up
Recommended Articles
Page :