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:
- Inicialitzeu la variable dif que és igual a arr [0] - 0 .
- Ara recorre la matriu i veure si la diferència entre arr [i] - i i dif és zero o no.
- Si la diferència no és igual a zero en els passos anteriors, es troba l'element que falta.
- 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 .
- Ara incrementeu el fitxer dif ja que la diferència augmenta ara.
- 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:
- Inicialitzeu una matriu booleana b [] amb zero de mida igual al element màxim de la matriu .
- Iterar sobre la matriu donada i marqueu per a cada element de la matriu donada que aquest índex sigui cert a la matriu b [] .
- 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.