Compruebe si existe un par con una diferencia absoluta dada en una array

Dada una array N×M y una diferencia K . La tarea es verificar si existe o no un par con la diferencia absoluta dada en la array.
 

Ejemplos

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

Acercarse:  

  • Inicialice un mapa hash para realizar un seguimiento de los elementos ya visitados de la array.
  • Itere sobre la array y verifique si la diferencia entre el elemento actual y k ya está presente en el mapa hash. Si es así, entonces el elemento actual y la diferencia entre los elementos y k son el par deseado.
  • De lo contrario, agregue el elemento actual al mapa.

A continuación se muestra la implementación del enfoque anterior:

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>
Producción

YES

Complejidad temporal : O(N*M)
Espacio auxiliar: O(N*M)

Publicación traducida automáticamente

Artículo escrito por barykrg y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *