Encuentre distintos elementos comunes a todas las filas de una array

Dada una array xn. El problema es encontrar todos los elementos distintos comunes a todas las filas de la array. Los elementos se pueden imprimir en cualquier orden.

Ejemplos: 

Input : mat[][] = {  {2, 1, 4, 3},
                     {1, 2, 3, 2},  
                     {3, 6, 2, 3},  
                     {5, 2, 5, 3}  }
Output : 2 3

Input : mat[][] = {  {12, 1, 14, 3, 16},
                     {14, 2, 1, 3, 35},  
                     {14, 1, 14, 3, 11},  
                     {14, 25, 3, 2, 1},
                     {1, 18, 3, 21, 14}  }
Output : 1 3 14

Método 1: usar tres bucles anidados. Compruebe si un elemento de la primera fila está presente en todas las filas posteriores. Complejidad temporal de O(n 3 ). Es posible que se requiera espacio adicional para manejar los elementos duplicados.
 
Método 2: Ordene todas las filas de la array individualmente en orden creciente. Luego aplique un enfoque modificado al problema de encontrar elementos comunes en 3 arreglos ordenados . A continuación se da una implementación para el mismo. 

C++

// C++ implementation to find distinct elements
// common to all rows of a matrix
#include <bits/stdc++.h>
using namespace std;
const int MAX = 100;
 
// function to individually sort
// each row in increasing order
void sortRows(int mat[][MAX], int n)
{
    for (int i=0; i<n; i++)
        sort(mat[i], mat[i] + n);
}
 
// function to find all the common elements
void findAndPrintCommonElements(int mat[][MAX], int n)
{
    // sort rows individually
    sortRows(mat, n);
 
    // current column index of each row is stored
    // from where the element is being searched in
    // that row
    int curr_index[n];
    memset(curr_index, 0, sizeof(curr_index));
    int f = 0;
 
    for (; curr_index[0]<n; curr_index[0]++)
    {
        // value present at the current column index
        // of 1st row
        int value = mat[0][curr_index[0]];
 
        bool present = true;
 
        // 'value' is being searched in all the
        // subsequent rows
        for (int i=1; i<n; i++)
        {
            // iterate through all the elements of
            // the row from its current column index
            // till an element greater than the 'value'
            // is found or the end of the row is
            // encountered
            while (curr_index[i] < n &&
                   mat[i][curr_index[i]] <= value)
                curr_index[i]++;
 
            // if the element was not present at the column
            // before to the 'curr_index' of the row
            if (mat[i][curr_index[i]-1] != value)
                present = false;
 
            // if all elements of the row have
            // been traversed
            if (curr_index[i] == n)
            {
                f = 1;
                break;
            }
        }
 
        // if the 'value' is common to all the rows
        if (present)
            cout << value << " ";
 
        // if any row have been completely traversed
        // then no more common elements can be found
        if (f == 1)
            break;
    }
}
 
// Driver program to test above
int main()
{
    int mat[][MAX] = {  {12, 1, 14, 3, 16},
        {14, 2, 1, 3, 35},
        {14, 1, 14, 3, 11},
        {14, 25, 3, 2, 1},
        {1, 18, 3, 21, 14}
    };
 
    int n = 5;
    findAndPrintCommonElements(mat, n);
    return 0;
}

Java

// JAVA Code to find distinct elements
// common to all rows of a matrix
import java.util.*;
 
class GFG {
     
    // function to individually sort
    // each row in increasing order
    public static void sortRows(int mat[][], int n)
    {
        for (int i=0; i<n; i++)
            Arrays.sort(mat[i]);
    }
      
    // function to find all the common elements
    public static void findAndPrintCommonElements(int mat[][],
                                                     int n)
    {
        // sort rows individually
        sortRows(mat, n);
      
        // current column index of each row is stored
        // from where the element is being searched in
        // that row
        int curr_index[] = new int[n];
         
        int f = 0;
      
        for (; curr_index[0]<n; curr_index[0]++)
        {
            // value present at the current column index
            // of 1st row
            int value = mat[0][curr_index[0]];
      
            boolean present = true;
      
            // 'value' is being searched in all the
            // subsequent rows
            for (int i=1; i<n; i++)
            {
                // iterate through all the elements of
                // the row from its current column index
                // till an element greater than the 'value'
                // is found or the end of the row is
                // encountered
                while (curr_index[i] < n &&
                       mat[i][curr_index[i]] <= value)
                    curr_index[i]++;
      
                // if the element was not present at the
                // column before to the 'curr_index' of the
               // row
                if (mat[i][curr_index[i]-1] != value)
                    present = false;
      
                // if all elements of the row have
                // been traversed
                if (curr_index[i] == n)
                {
                    f = 1;
                    break;
                }
            }
      
            // if the 'value' is common to all the rows
            if (present)
               System.out.print(value+" ");
      
            // if any row have been completely traversed
            // then no more common elements can be found
            if (f == 1)
                break;
        }
    }
     
    /* Driver program to test above function */
    public static void main(String[] args)
    {
        int mat[][] = {  {12, 1, 14, 3, 16},
                         {14, 2, 1, 3, 35},
                         {14, 1, 14, 3, 11},
                         {14, 25, 3, 2, 1},
                         {1, 18, 3, 21, 14}
                                            };
          
            int n = 5;
            findAndPrintCommonElements(mat, n);
    }
  }
// This code is contributed by Arnav Kr. Mandal.

Python3

# Python3 implementation to find distinct
# elements common to all rows of a matrix
MAX = 100
 
# function to individually sort
# each row in increasing order
def sortRows(mat, n):
 
    for i in range(0, n):
        mat[i].sort();
 
# function to find all the common elements
def findAndPrintCommonElements(mat, n):
 
    # sort rows individually
    sortRows(mat, n)
 
    # current column index of each row is
    # stored from where the element is being
    # searched in that row
     
    curr_index = [0] * n
    for i in range (0, n):
        curr_index[i] = 0
         
    f = 0
 
    while(curr_index[0] < n):
     
        # value present at the current
        # column index of 1st row
        value = mat[0][curr_index[0]]
 
        present = True
 
        # 'value' is being searched in
        # all the subsequent rows
        for i in range (1, n):
         
            # iterate through all the elements
            # of the row from its current column
            # index till an element greater than
            # the 'value' is found or the end of
            # the row is encountered
            while (curr_index[i] < n and
                   mat[i][curr_index[i]] <= value):
                curr_index[i] = curr_index[i] + 1
                 
            # if the element was not present at
            # the column before to the 'curr_index'
            # of the row
            if (mat[i][curr_index[i] - 1] != value):
                present = False
 
            # if all elements of the row have
            # been traversed)
            if (curr_index[i] == n):
             
                f = 1
                break
             
        # if the 'value' is common to all the rows
        if (present):
            print(value, end = " ")
 
        # if any row have been completely traversed
        # then no more common elements can be found
        if (f == 1):
            break
     
        curr_index[0] = curr_index[0] + 1
 
# Driver Code
mat = [[12, 1, 14, 3, 16],
       [14, 2, 1, 3, 35],
       [14, 1, 14, 3, 11],
       [14, 25, 3, 2, 1],
       [1, 18, 3, 21, 14]]
 
n = 5
findAndPrintCommonElements(mat, n)
 
# This code is contributed by iAyushRaj

C#

// C# Code to find distinct elements
// common to all rows of a matrix
using System;
 
class GFG
{
 
// function to individually sort
// each row in increasing order
public static void sortRows(int[][] mat, int n)
{
    for (int i = 0; i < n; i++)
    {
        Array.Sort(mat[i]);
    }
}
 
// function to find all the common elements
public static void findAndPrintCommonElements(int[][] mat,
                                              int n)
{
    // sort rows individually
    sortRows(mat, n);
 
    // current column index of each row is stored
    // from where the element is being searched in
    // that row
    int[] curr_index = new int[n];
 
    int f = 0;
 
    for (; curr_index[0] < n; curr_index[0]++)
    {
        // value present at the current column index
        // of 1st row
        int value = mat[0][curr_index[0]];
 
        bool present = true;
 
        // 'value' is being searched in all the
        // subsequent rows
        for (int i = 1; i < n; i++)
        {
            // iterate through all the elements of
            // the row from its current column index
            // till an element greater than the 'value'
            // is found or the end of the row is
            // encountered
            while (curr_index[i] < n &&
                   mat[i][curr_index[i]] <= value)
            {
                curr_index[i]++;
            }
 
            // if the element was not present at the column
            // before to the 'curr_index' of the row
            if (mat[i][curr_index[i] - 1] != value)
            {
                present = false;
            }
 
            // if all elements of the row have
            // been traversed
            if (curr_index[i] == n)
            {
                f = 1;
                break;
            }
        }
 
        // if the 'value' is common to all the rows
        if (present)
        {
            Console.Write(value + " ");
        }
 
        // if any row have been completely traversed
        // then no more common elements can be found
        if (f == 1)
        {
            break;
        }
    }
}
 
// Driver Code
public static void Main(string[] args)
{
    int[][] mat = new int[][]
    {
        new int[] {12, 1, 14, 3, 16},
        new int[] {14, 2, 1, 3, 35},
        new int[] {14, 1, 14, 3, 11},
        new int[] {14, 25, 3, 2, 1},
        new int[] {1, 18, 3, 21, 14}
    };
 
    int n = 5;
    findAndPrintCommonElements(mat, n);
}
}
 
// This code is contributed by Shrikant13

Javascript

<script>
 
// JavaScript Code to find distinct elements
// common to all rows of a matrix
 
    // function to individually sort
    // each row in increasing order
    function sortRows(mat,n)
    {
        for (let i=0; i<n; i++)
            mat[i].sort(function(a,b){return a-b;});
    }
     
    // function to find all the common elements
    function findAndPrintCommonElements(mat,n)
    {
        // sort rows individually
        sortRows(mat, n);
        // current column index of each row is stored
        // from where the element is being searched in
        // that row
        let curr_index = new Array(n);
        for(let i=0;i<n;i++)
        {
            curr_index[i]=0;
        }
        let f = 0;
       
        for (; curr_index[0]<n; curr_index[0]++)
        {
            // value present at the current column index
            // of 1st row
            let value = mat[0][curr_index[0]];
       
            let present = true;
       
            // 'value' is being searched in all the
            // subsequent rows
            for (let i=1; i<n; i++)
            {
                // iterate through all the elements of
                // the row from its current column index
                // till an element greater than the 'value'
                // is found or the end of the row is
                // encountered
                while (curr_index[i] < n &&
                       mat[i][curr_index[i]] <= value)
                    curr_index[i]++;
       
                // if the element was not present at the
                // column before to the 'curr_index' of the
               // row
                if (mat[i][curr_index[i]-1] != value)
                    present = false;
       
                // if all elements of the row have
                // been traversed
                if (curr_index[i] == n)
                {
                    f = 1;
                    break;
                }
            }
       
            // if the 'value' is common to all the rows
            if (present)
               document.write(value+" ");
       
            // if any row have been completely traversed
            // then no more common elements can be found
            if (f == 1)
                break;
        }
    }
     
    /* Driver program to test above function */
    let mat = [[12, 1, 14, 3, 16],
       [14, 2, 1, 3, 35],
       [14, 1, 14, 3, 11],
       [14, 25, 3, 2, 1],
       [1, 18, 3, 21, 14]]
     
    let n = 5;
    findAndPrintCommonElements(mat, n);
      
// This code is contributed by patel2127
 
</script>

Producción:  

1 3 14

Complejidad de tiempo: O (n 2 log n), cada fila de tamaño n requiere O (nlogn) para ordenar y hay un total de n filas. 
Espacio auxiliar: O(n) para almacenar índices de columna actuales para cada fila.
 
Método 3: Utiliza el concepto de hashing. Los siguientes pasos son:  

  1. Asigne el elemento de la primera fila en una tabla hash. Que sea hachís .
  2. Fow fila = 2 a n
  3. Asigne cada elemento de la fila actual a una tabla hash temporal. Que sea temporal .
  4. Itere a través de los elementos de hash y verifique que los elementos de hash estén presentes en temp . Si no está presente, elimine esos elementos del hash .
  5. Cuando todas las filas se procesan de esta manera, los elementos que quedan en hash son los elementos comunes requeridos.

C++

// C++ program to find distinct elements
// common to all rows of a matrix
#include <bits/stdc++.h>
using namespace std;
 
const int MAX = 100;
 
// function to individually sort
// each row in increasing order
void findAndPrintCommonElements(int mat[][MAX], int n)
{
    unordered_set<int> us;
 
    // map elements of first row
    // into 'us'
    for (int i=0; i<n; i++)
        us.insert(mat[0][i]);
 
    for (int i=1; i<n; i++)
    {
        unordered_set<int> temp;
       
        // mapping elements of current row
        // in 'temp'
        for (int j=0; j<n; j++)
            temp.insert(mat[i][j]);
 
        unordered_set<int>:: iterator itr;
 
        // iterate through all the elements
        // of 'us'
        for (itr=us.begin(); itr!=us.end(); itr++)
 
            // if an element of 'us' is not present
            // into 'temp', then erase that element
            // from 'us'
            if (temp.find(*itr) == temp.end())
                us.erase(itr++);
              else
               itr++;
 
        // if size of 'us' becomes 0,
        // then there are no common elements
        if (us.size() == 0)
            break;
    }
 
    // print the common elements
    unordered_set<int>:: iterator itr;
    for (itr=us.begin(); itr!=us.end(); itr++)
        cout << *itr << " ";
}
 
// Driver program to test above
int main()
{
    int mat[][MAX] = { {2, 1, 4, 3},
                       {1, 2, 3, 2},
                       {3, 6, 2, 3},
                       {5, 2, 5, 3}  };
    int n = 4;
    findAndPrintCommonElements(mat, n);
    return 0;
}

Java

// Java program to find distinct elements
// common to all rows of a matrix
import java.util.*;
class GFG{
 
  static int MAX = 100;
 
  // function to individually sort
  // each row in increasing order
  @SuppressWarnings("unchecked")
  static void findAndPrintCommonElements(int mat[][], int n)
  {
    HashSet<Integer> us = new HashSet<Integer>();
 
    // map elements of first row
    // into 'us'
    for (int i = 0; i < n; i++)
      us.add(mat[0][i]);
 
    for (int i = 1; i < n; i++)
    {
      HashSet<Integer> temp = new HashSet<Integer>();
 
      // mapping elements of current row
      // in 'temp'
      for (int j = 0; j < n; j++)
        temp.add(mat[i][j]);
 
      HashSet<Integer> itr=(HashSet<Integer>) us.clone();
 
      // iterate through all the elements
      // of 'us'
      for (int x :itr)
 
        // if an element of 'us' is not present
        // into 'temp', then erase that element
        // from 'us'
        if (!temp.contains(x))
          us.remove(x);
 
      // if size of 'us' becomes 0,
      // then there are no common elements
      if (us.size() == 0)
        break;
    }
 
    // print the common elements
    HashSet<Integer> itr1=(HashSet<Integer>) us.clone();
    for (int x :itr1)
      System.out.print(x+ " ");
  }
 
  // Driver program to test above
  public static void main(String[] args)
  {
    int mat[][] = { {2, 1, 4, 3},
                   {1, 2, 3, 2},
                   {3, 6, 2, 3},
                   {5, 2, 5, 3}  };
    int n = 4;
    findAndPrintCommonElements(mat, n);
  }
}
 
// This code is contributed by shikhasingrajput

Python3

# Python3 program to find distinct elements
# common to all rows of a matrix
MAX = 100
 
# function to individually sort
# each row in increasing order
def findAndPrintCommonElements(mat, n):
    us = dict()
 
    # map elements of first row
    # into 'us'
    for i in range(n):
        us[mat[0][i]] = 1
 
    for i in range(1, n):
        temp = dict()
         
        # mapping elements of current row
        # in 'temp'
        for j in range(n):
            temp[mat[i][j]] = 1
 
        # iterate through all the elements
        # of 'us'
        for itr in list(us):
 
            # if an element of 'us' is not present
            # into 'temp', then erase that element
            # from 'us'
            if itr not in temp:
                del us[itr]
 
        # if size of 'us' becomes 0,
        # then there are no common elements
        if (len(us) == 0):
            break
 
    # print common elements
    for itr in list(us)[::-1]:
        print(itr, end = " ")
 
# Driver Code
mat = [[2, 1, 4, 3],
       [1, 2, 3, 2],
       [3, 6, 2, 3],
       [5, 2, 5, 3]]
n = 4
findAndPrintCommonElements(mat, n)
 
# This code is contributed by Mohit Kumar

C#

// C# program to find distinct elements
// common to all rows of a matrix
using System;
using System.Collections.Generic;
 
public class GFG{
 
  static int MAX = 100;
 
  // function to individually sort
  // each row in increasing order
  static void findAndPrintCommonElements(int [,]mat, int n)
  {
    HashSet<int> us = new HashSet<int>();
 
    // map elements of first row
    // into 'us'
    for (int i = 0; i < n; i++)
      us.Add(mat[0, i]);
 
    for (int i = 1; i < n; i++)
    {
      HashSet<int> temp = new HashSet<int>();
 
      // mapping elements of current row
      // in 'temp'
      for (int j = 0; j < n; j++)
        temp.Add(mat[i,j]);
 
      HashSet<int> itr=new HashSet<int>(us);
 
      // iterate through all the elements
      // of 'us'
      foreach (int x  in itr)
 
        // if an element of 'us' is not present
        // into 'temp', then erase that element
        // from 'us'
        if (!temp.Contains(x))
          us.Remove(x);
 
      // if size of 'us' becomes 0,
      // then there are no common elements
      if (us.Count == 0)
        break;
    }
 
    // print the common elements
    HashSet<int> itr1=new HashSet<int>(us);
    foreach (int x in itr1)
      Console.Write(x+ " ");
  }
 
  // Driver program to test above
  public static void Main(String[] args)
  {
    int [,]mat = { {2, 1, 4, 3},
                  {1, 2, 3, 2},
                  {3, 6, 2, 3},
                  {5, 2, 5, 3}  };
    int n = 4;
    findAndPrintCommonElements(mat, n);
  }
}
 
// This code is contributed by shikhasingrajput

Javascript

<script>
 
// Javascript program to find distinct elements
// common to all rows of a matrix
var MAX = 100;
 
// function to individually sort
// each row in increasing order
function findAndPrintCommonElements(mat, n)
{
    var us = new Set();
 
    // map elements of first row
    // into 'us'
    for (var i = 0; i < n; i++)
        us.add(mat[0][i]);
 
    for(var i = 1; i < n; i++)
    {
        var temp = new Set();
       
        // mapping elements of current row
        // in 'temp'
        for (var j = 0; j < n; j++)
            temp.add(mat[i][j]);
 
        // iterate through all the elements
        // of 'us'
        for(var itr of us)
        {
 
            // if an element of 'us' is not present
            // into 'temp', then erase that element
            // from 'us'
            if(!temp.has(itr))
                us.delete(itr);
        }
 
        // if size of 'us' becomes 0,
        // then there are no common elements
        if (us.size == 0)
            break;
    }
 
    // print the common elements
    for(var itr of [...us].sort((a,b)=>b-a))
        document.write( itr + " ");
}
 
// Driver program to test above
var mat = [ [2, 1, 4, 3],
                   [1, 2, 3, 2],
                   [3, 6, 2, 3],
                   [5, 2, 5, 3]];
var n = 4;
findAndPrintCommonElements(mat, n);
 
// This code is contributed by noob2000.
</script>

 Producción: 

3 2

Complejidad temporal: O(n 2
Complejidad espacial: O(n)

Método 4: Uso del mapa

  1. Inserta todos los elementos de la 1ra fila en el mapa.
  2. Ahora verificamos que los elementos presentes en el mapa estén presentes en cada fila o no.
  3. Si el elemento está presente en el mapa y no está duplicado en la fila actual, incrementamos el recuento del elemento en el mapa en 1.
  4. Si llegamos a la última fila durante el recorrido y si el elemento aparece (N-1) veces antes, imprimimos el elemento.

C++

// C++ program to find distinct elements
// common to all rows of a matrix
#include <bits/stdc++.h>
using namespace std;
 
const int MAX = 100;
 
// function to individually sort
// each row in increasing order
void distinct(int mat[][MAX], int N)
{
 
  // make a empty map
  unordered_map<int,int> ans;
 
  // Insert the elements of
  // first row in the map and
  // initialize with 1
  for (int j = 0; j < N; j++) {
    ans[mat[0][j]]=1;
  }
 
  // Traverse the matrix from 2nd row
  for (int i = 1; i < N; i++) {
    for (int j = 0; j < N; j++) {
 
      // If the element is present in the map
      // and is not duplicated in the current row
      if (ans[mat[i][j]] != 0
          && ans[mat[i][j]] == i) {
 
        // Increment count of the element in
        // map by 1
        ans[mat[i][j]]= i + 1;
 
        // If we have reached the last row
        if (i == N - 1) {
 
          // Print the element
          cout<<mat[i][j]<<" ";
        }
      }
    }
  }
}
 
// Driver program to test above
int main()
{
  int N=4;
 
  int mat[][MAX] = { {2, 1, 4, 3},
                    {1, 2, 3, 2},
                    {3, 6, 2, 3},
                    {5, 2, 5, 3}  };
 
  distinct(mat, N);
  return 0;
}
 
// This code is Contributed by Aarti_Rathi

Java

// JAVA Code to find distinct elements
// common to all rows of a matrix
import java.io.*;
import java.util.*;
 
class GFG {
  static void distinct(int matrix[][], int N)
  {
    // make a empty map
    Map<Integer, Integer> ans = new HashMap<>();
 
    // Insert the elements of
    // first row in the map and
    // initialize with 1
    for (int j = 0; j < N; j++) {
      ans.put(matrix[0][j], 1);
    }
 
    // Traverse the matrix from 2nd row
    for (int i = 1; i < N; i++) {
      for (int j = 0; j < N; j++) {
 
        // If the element is present in the map
        // and is not duplicated in the current row
        if (ans.get(matrix[i][j]) != null
            && ans.get(matrix[i][j]) == i) {
 
          // Increment count of the element in
          // map by 1
          ans.put(matrix[i][j], i + 1);
 
          // If we have reached the last row
          if (i == N - 1) {
 
            // Print the element
            System.out.print(matrix[i][j]
                             + " ");
          }
        }
      }
    }
  }
 
  /* Driver program to test above function */
  public static void main(String[] args)
  {
    int matrix[][] = { { 2, 1, 4, 3 },
                      { 1, 2, 3, 2 },
                      { 3, 6, 2, 3 },
                      { 5, 2, 5, 3 } };
    int n = 4;
    distinct(matrix, n);
  }
}
// This code is Contributed by Darshit Shukla

Python3

# Python code to find distinct elements
# common to all rows of a matrix
def distinct(matrix, N):
     
    # Make a empty map
    ans = {}
 
    # Insert the elements of
    # first row in the map and
    # initialize with 1
    for j in range(N):
        ans[matrix[0][j]] = 1
 
    # Traverse the matrix from 2nd row
    for i in range(N):
        for j in range(N):
             
            # If the element is present in the map
            # and is not duplicated in the current row
            if matrix[i][j] in ans and ans[matrix[i][j]] == i:
                 
                # Increment count of the element in
                # map by 1
                ans[matrix[i][j]] = i + 1
 
                # If we have reached the last row
                if (i == N - 1):
                     
                    # Print the element
                    print(matrix[i][j],end=" ")
 
# Driver code
matrix = [ [ 2, 1, 4, 3 ],
                  [ 1, 2, 3, 2 ],
                  [ 3, 6, 2, 3 ],
                  [ 5, 2, 5, 3 ] ]
n = 4
 
distinct(matrix, n)
 
# This code is contributed by shinjanpatra

C#

// C# code to find distinct elements
// common to all rows of a matrix
using System;
using System.Collections.Generic;
 
class GFG{
     
static void distinct(int[,] matrix, int N)
{
     
    // Make a empty map
    Dictionary<int,
               int> ans = new Dictionary<int,
                                         int>();
 
    // Insert the elements of
    // first row in the map and
    // initialize with 1
    for(int j = 0; j < N; j++)
    {
        ans[matrix[0, j]] = 1;
    }
 
    // Traverse the matrix from 2nd row
    for(int i = 1; i < N; i++)
    {
        for(int j = 0; j < N; j++)
        {
             
            // If the element is present in the map
            // and is not duplicated in the current row
            if (ans.ContainsKey(matrix[i, j]) &&
                            ans[matrix[i, j]] == i)
            {
                 
                // Increment count of the element in
                // map by 1
                ans[matrix[i, j]] = i + 1;
 
                // If we have reached the last row
                if (i == N - 1)
                {
                     
                    // Print the element
                    Console.Write(matrix[i, j] + " ");
                }
            }
        }
    }
}
 
// Driver code
public static void Main(string[] args)
{
    int[,] matrix = { { 2, 1, 4, 3 },
                      { 1, 2, 3, 2 },
                      { 3, 6, 2, 3 },
                      { 5, 2, 5, 3 } };
    int n = 4;
     
    distinct(matrix, n);
}
}
 
// This code is contributed by ukasp

Javascript

<script>
 
// Javascript code to find distinct elements
// common to all rows of a matrix
 
     
function distinct(matrix, N)
{
     
    // Make a empty map
    var ans = new Map()
 
    // Insert the elements of
    // first row in the map and
    // initialize with 1
    for(var j = 0; j < N; j++)
    {
        ans.set(matrix[0][j], 1);
    }
 
    // Traverse the matrix from 2nd row
    for(var i = 1; i < N; i++)
    {
        for(var j = 0; j < N; j++)
        {
             
            // If the element is present in the map
            // and is not duplicated in the current row
            if (ans.has(matrix[i][j]) &&
                            ans.get(matrix[i][j]) == i)
            {
                 
                // Increment count of the element in
                // map by 1
                ans.set(matrix[i][j], i + 1);
 
                // If we have reached the last row
                if (i == N - 1)
                {
                     
                    // Print the element
                    document.write(matrix[i][j] + " ");
                }
            }
        }
    }
}
 
// Driver code
var matrix = [ [ 2, 1, 4, 3 ],
                  [ 1, 2, 3, 2 ],
                  [ 3, 6, 2, 3 ],
                  [ 5, 2, 5, 3 ] ];
var n = 4;
 
distinct(matrix, n);
 
// This code is contributed by rutvik_56.
</script>

Producción:

2 3

Complejidad temporal: O(n 2

Complejidad espacial: O(n)

Este artículo es una contribución de Ayush Jauhari . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a contribuir@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 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 *