Cerqueu tots els números que falten d'una matriu ordenada determinada

Bloc

Cerqueu tots els números que falten d'una matriu ordenada determinada

Donada una matriu ordenada arr [] de N nombres enters, la tasca consisteix a trobar els múltiples elements que falten a la matriu entre els intervals [arr [0], arr [N-1]] .



Exemples:

Entrada: _ arr [] = {6, 7, 10, 11, 13} _



_Sortida: _ 8 setembre 12

Explicació:



Els elements de la matriu estan presents en el rang de l'element de matriu màxim i mínim [6, 13]. Per tant, els valors totals seran {6, 7, 8, 9, 10, 11, 12, 13}.

Els elements de l'interval anterior que falten a la matriu són {8, 9, 12}.

Entrada: _ arr [] = {1, 2, 4, 6} _

_Sortida: _ maig 3

Recomanat: proveu el vostre enfocament {AQUÍ} primer, abans de passar a la solució.

Enfocament ingenu: La idea ingènua és fer una iteració al llarg del diferència entre el parell consecutiu d’elements i imprimeix tots els números d’aquest interval si la diferència és diferent de zero. A continuació es detallen els passos següents:

  1. Inicialitzeu la variable dif que és igual a arr [0] - 0 .
  2. Ara recorre la matriu i veure si la diferència entre arr [i] - i i dif és zero o no.
  3. Si la diferència no és igual a zero en els passos anteriors, es troba l'element que falta.
  4. Per trobar els múltiples elements que falten, executeu un bucle al seu interior i veure si el fitxer dif és inferior a arr [i] - i a continuació, imprimiu l'element que falta, és a dir, i + dif .
  5. Ara incrementeu el fitxer dif ja que la diferència augmenta ara.
  6. Repetiu des del pas 2 fins que no es trobin tots els números que falten.

A continuació es mostra la implementació de l'enfocament anterior:

  • C ++

// C++ program for the above approach

#include

**using** **namespace** std;

// Function to find the missing elements

**void** printMissingElements(``**int** arr[], **int** N)

{

// Initialize diff

**int** diff = arr[0] - 0;

**for** (``**int** i = 0; i

on comprar fitxa fina

// Check if diff and arr[i]-i

// both are equal or not

**if** (arr[i] - i != diff) {

// Loop for consecutive

// missing elements

**while** (diff

cout << i + diff << ' '``;

diff++;

}

}

}

}

// Driver Code

preguntes sobre l'entrevista de microsoft al campus

**int** main()

{

// Given array arr[]

**int** arr[] = { 6, 7, 10, 11, 13 };

**int** N = **sizeof**``(arr) / **sizeof**``(``**int**``);

// Function Call

printMissingElements(arr, N);

**return** 0;

}

Sortida:

8 9 12

Complexitat horària: _ O (N2) _

Espai auxiliar: _ O (1) _

Enfocament eficient: La idea és utilitzar-la Hashing per optimitzar l'enfocament anterior. Creeu una matriu booleana (per exemple b [] ) de mida igual a l'element màxim de la matriu i només marquen les posicions de la matriu b [] que estan presents a la matriu donada. Imprimiu tot l'índex de la matriu b [] que no estan marcats.

A continuació es detallen els passos següents:

  1. Inicialitzeu una matriu booleana b [] amb zero de mida igual al element màxim de la matriu .
  2. Iterar sobre la matriu donada i marqueu per a cada element de la matriu donada que aquest índex sigui cert a la matriu b [] .
  3. Ara travesseu la matriu donada b [] de l’índex arr [0] i imprimiu aquells índexs el valor dels quals és fals ja que són l'element que falta a la matriu donada.

A continuació es mostra la implementació de l'enfocament anterior:

  • C ++

// C++ program for the above approach

#include

**using** **namespace** std;

// Function to find the missing elements

**void** printMissingElements(``**int** arr[], **int** N)

{

// Initialize an array with zero

// of size equals to the maximum

// element in the array

**int** b[arr[N - 1] + 1] = { 0 };

// Make b[i]=1 if i is present

// in the array

**for** (``**int** i = 0; i

// If the element is present

tv.fx networks.com/activate

// make b[arr[i]]=1

b[arr[i]] = 1;

}

// Print the indices where b[i]=0

**for** (``**int** i = arr[0]; i <= arr[N - 1]; i++) {

**if** (b[i] == 0) {

cout << i << ' '``;

}

}

}

// Driver Code

**int** main()

{

// Given array arr[]

**int** arr[] = { 6, 7, 10, 11, 13 };

**int** N = **sizeof**``(arr) / **sizeof**``(``**int**``);

// Function Call

printMissingElements(arr, N);

**return** 0;

}

Sortida:

8 9 12

Complexitat horària: _ O (M), on M és l'element màxim de la matriu ._

Espai auxiliar: _ O (M) _

finestres de pantalla rosa 10

Atenció lector! No deixeu d’aprendre ara. Aprofiteu tots els conceptes importants de DSA amb el Curs DSA Self Paced a un preu apte per a estudiants i prepareu-vos per a la indústria.

#arrays #greedy #hash #mathematical # frekwing counting #hashtable

www.geeksforgeeks.org

Cerqueu tots els números que falten d'una matriu ordenada determinada

Un portal d’informàtica per a frikis. Conté articles d’informàtica i programació ben escrits, ben pensats i ben explicats, qüestionaris i preguntes sobre pràctiques / programació competitiva / entrevista d’empresa.