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
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> |
YES
Time Complexity: O(N*M)
Auxiliary Space: O(N*M)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!