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

• Difficulty Level : Medium
• Last Updated : 06 Sep, 2022

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 ``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 s = ``new` `HashSet();``  ` `    ``// 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

 ``

Output

```YES
```

Complexity  Analysis:

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

My Personal Notes arrow_drop_up