Matriisi on kokoelma elementtejä, joilla on samat tietotyypit. Se on lineaarinen tietorakenne ja se on tallennettu vierekkäisiin muistipaikkoihin. Voit suorittaa useita perustoimintoja taulukossa, kuten lisäys, poisto, haku, päivitys, läpikulku jne.
Tässä artikkelissa opit poistamaan päällekkäiset elementit lajiteltuista ja lajittelemattomista taulukoista.
Kuinka poistaa päällekkäisiä elementtejä lajittelemattomasta taulukosta
Ongelma
Sinulle annetaan lajittelematon joukko kokonaislukuja. Sinun on poistettava päällekkäiset elementit taulukosta ja tulostettava taulukko ainutlaatuisilla elementeillä.
Esimerkki 1: Olkoon arr = [23, 35, 23, 56, 67, 35, 35, 54, 76]
Taulukko päällekkäisten elementtien poistamisen jälkeen: 23 35 56 67 54 76
Siten lähtö on 23 35 56 67 54 76.
Esimerkki 2: Olkoon arr = [5, 6, 1, 1, 7, 5, 8, 2, 7, 8]
Taulukko päällekkäisten elementtien poistamisen jälkeen: 5 6 1 7 8 2
Siten lähtö on 5 6 1 7 8 2.
Lähestymistapa kaksoiskappaleiden poistamiseksi lajittelemattomasta taulukosta
Voit poistaa päällekkäisiä elementtejä lajittelemattomasta taulukosta noudattamalla seuraavaa lähestymistapaa:
- Alusta hash-kartta, joka tallentaa kaikki ryhmän ainutlaatuiset elementit.
- Liikuta taulukkoa.
- Tarkista, onko elementti läsnä taulukossa.
- Jos elementti on taulukossa, jatka kulkua.
- Jos elementtiä ei ole taulukossa, tulosta elementti ja tallenna se hash-karttaan.
Merkintä: Tämän ratkaisun aikakompleksi on O (n).
C ++ -ohjelma päällekkäisten elementtien poistamiseksi lajittelemattomasta taulukosta
Alla on C ++ -ohjelma päällekkäisten elementtien poistamiseksi lajittelemattomasta taulukosta:
// C ++ -ohjelma päällekkäisten elementtien poistamiseksi lajittelemattomasta taulukosta
#sisältää
käyttämällä nimitilaa vakio;
// Toiminto päällekkäisten elementtien poistamiseksi lajittelemattomasta taulukosta
void removeDuplicateElements (int arr [], int-koko)
{
järjestämätön kartta m;
for (int i = 0; i{
// Tulosta elementti, jos se ei ole
// läsnä hash-kartalla
jos (m.find (arr [i]) == m.end ())
{
cout << arr [i] << "";
}
// Lisää elementti hash-karttaan
m [arr [i]] = tosi;
}
cout << endl;
}
void printArrayElements (int arr [], int-koko)
{
for (int i = 0; i{
cout << arr [i] << "";
}
cout << endl;
}
int main ()
{
int arr1 [] = {23, 35, 23, 56, 67, 35, 35, 54, 76};
int size1 = sizeof (arr1) / sizeof (arr1 [0]);
cout << "Initial Array:" << endl;
printArrayElements (arr1, koko1);
cout << "Taulukko kaksoiskappaleiden poistamisen jälkeen:" << endl;
removeDuplicateElements (arr1, koko1);
int arr2 [] = {5, 6, 1, 1, 7, 5, 8, 2, 7, 8};
int size2 = sizeof (arr2) / sizeof (arr2 [0]);
cout << "Initial Array:" << endl;
printArrayElements (arr2, koko2);
cout << "Taulukko kaksoiskappaleiden poistamisen jälkeen:" << endl;
removeDuplicateElements (arr2, koko2);
int arr3 [] = {32, 35, 33, 32, 33, 38, 32, 39};
int size3 = sizeof (arr3) / sizeof (arr3 [0]);
cout << "Initial Array:" << endl;
printArrayElements (arr3, koko3);
cout << "Taulukko kaksoiskappaleiden poistamisen jälkeen:" << endl;
removeDuplicateElements (arr3, koko3);
paluu 0;
}
Tuotos:
Alkuperäinen taulukko:
23 35 23 56 67 35 35 54 76
Taulukko kaksoiskappaleiden poistamisen jälkeen:
23 35 56 67 54 76
Alkuperäinen taulukko:
5 6 1 1 7 5 8 2 7 8
Taulukko kaksoiskappaleiden poistamisen jälkeen:
5 6 1 7 8 2
Alkuperäinen taulukko:
32 35 33 32 33 38 32 39
Taulukko kaksoiskappaleiden poistamisen jälkeen:
32 35 33 38 39
Liittyvät: Kuinka tulostaa "Hei, maailma!" suosituimmilla ohjelmointikielillä
Python-ohjelma päällekkäisten elementtien poistamiseksi lajittelemattomasta taulukosta
Alla on Python-ohjelma päällekkäisten elementtien poistamiseksi lajittelemattomasta taulukosta:
# Python-ohjelma päällekkäisten elementtien poistamiseksi lajittelemattomasta luettelosta
def removeDuplicateElements (arr, koko):
m = {}
i: lle alueella (koko):
# Tulosta elementti, jos se ei ole
# esiintyy sanakirjassa
jos arr [i] ei metreinä:
tulosta (arr [i], loppu = "")
# Lisää elementti sanakirjaan
m [arr [i]] = 1
Tulosta()
def printListElements (arr, koko):
i: lle alueella (koko):
tulosta (arr [i], loppu = "")
Tulosta()
arr1 = [23, 35, 23, 56, 67, 35, 35, 54, 76]
koko1 = len (arr1)
tulosta ("Alkuperäinen luettelo:")
printListElements (arr1, koko1)
tulosta ("Luettelo kaksoiskappaleiden poistamisen jälkeen:")
removeDuplicateElements (arr1, koko1)
arr2 = [5, 6, 1, 1, 7, 5, 8, 2, 7, 8]
koko2 = len (arr2)
tulosta ("Alkuperäinen luettelo:")
printListElements (arr2, koko2)
tulosta ("Luettelo kaksoiskappaleiden poistamisen jälkeen:")
removeDuplicateElements (arr2, koko2)
arr3 = [32, 35, 33, 32, 33, 38, 32, 39]
size3 = len (arr3)
tulosta ("Alkuperäinen luettelo:")
printListElements (arr3, koko3)
tulosta ("Luettelo kaksoiskappaleiden poistamisen jälkeen:")
removeDuplicateElements (arr3, koko3)
Tuotos:
Alkuperäinen taulukko:
23 35 23 56 67 35 35 54 76
Taulukko kaksoiskappaleiden poistamisen jälkeen:
23 35 56 67 54 76
Alkuperäinen taulukko:
5 6 1 1 7 5 8 2 7 8
Taulukko kaksoiskappaleiden poistamisen jälkeen:
5 6 1 7 8 2
Alkuperäinen taulukko:
32 35 33 32 33 38 32 39
Taulukko kaksoiskappaleiden poistamisen jälkeen:
32 35 33 38 39
JavaScript-ohjelma päällekkäisten elementtien poistamiseksi lajittelemattomasta taulukosta
Alla on JavaScript-ohjelma päällekkäisten elementtien poistamiseksi lajittelemattomasta taulukosta:
// JavaScript-ohjelma päällekkäisten elementtien poistamiseksi lajittelemattomasta taulukosta
// Toiminto päällekkäisten elementtien poistamiseksi lajittelemattomasta taulukosta
funktio removeDuplicateElements (arr, koko) {
olkoon m = uusi kartta ();
for (olkoon i = 0; i // Tulosta elementti, jos se ei ole
// läsnä hash-kartalla
jos (m.get (arr [i]) == null) {
document.write (arr [i] + "");
}
// Lisää elementti hash-karttaan
m.set (arr [i], tosi);
}
document.write ("
");
}
funktio printArrayElements (arr, koko) {
for (olkoon i = 0; idocument.write (arr [i] + "");
}
document.write ("
");
}
olkoon arr1 = [23, 35, 23, 56, 67, 35, 35, 54, 76];
olkoon koko1 = arr1.pituus;
document.write ("Alustava taulukko:" + "
");
printArrayElements (arr1, koko1);
document.write ("Taulukko kaksoiskappaleiden poistamisen jälkeen:" + "
");
removeDuplicateElements (arr1, koko1);
olkoon arr2 = [5, 6, 1, 1, 7, 5, 8, 2, 7, 8];
olkoon koko2 = arr2.pituus;
document.write ("Alustava taulukko:" + "
");
printArrayElements (arr2, koko2);
document.write ("Taulukko kaksoiskappaleiden poistamisen jälkeen:" + "
");
removeDuplicateElements (arr2, koko2);
olkoon arr3 = [32, 35, 33, 32, 33, 38, 32, 39];
olkoon koko3 = arr3.pituus;
document.write ("Alustava taulukko:" + "
");
printArrayElements (arr3, koko3);
document.write ("Taulukko kaksoiskappaleiden poistamisen jälkeen:" + "
");
removeDuplicateElements (arr3, koko3);
Tuotos:
Alkuperäinen taulukko:
23 35 23 56 67 35 35 54 76
Taulukko kaksoiskappaleiden poistamisen jälkeen:
23 35 56 67 54 76
Alkuperäinen taulukko:
5 6 1 1 7 5 8 2 7 8
Taulukko kaksoiskappaleiden poistamisen jälkeen:
5 6 1 7 8 2
Alkuperäinen taulukko:
32 35 33 32 33 38 32 39
Taulukko kaksoiskappaleiden poistamisen jälkeen:
32 35 33 38 39
Liittyvät: Kuinka laskea merkkijonossa esiintyvän merkin esiintymät
Kuinka poistaa päällekkäisiä elementtejä lajitellusta taulukosta
Ongelma
Sinulle annetaan lajiteltu joukko kokonaislukuja. Sinun on poistettava päällekkäiset elementit taulukosta ja tulostettava taulukko ainutlaatuisilla elementeillä.
Esimerkki 1: Olkoon arr = [1, 1, 1, 2, 4, 6, 8, 8, 9, 9]
Taulukko päällekkäisten elementtien poistamisen jälkeen: 1 2 4 6 8 9
Siten lähtö on 1 2 4 6 8 9.
Esimerkki 2: Olkoon arr = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
Taulukko päällekkäisten elementtien poistamisen jälkeen: 1 2 3 4 5
Siten lähtö on 1 2 3 4 5.
Lähestymistapa päällekkäisten elementtien poistamiseksi lajitellusta taulukosta
Voit poistaa päällekkäisiä elementtejä lajitellusta taulukosta noudattamalla seuraavaa lähestymistapaa:
- Alusta indeksimuuttujat i ja j 0: lla.
- Toista taulukko.
- Jos i: s elementti ei ole sama kuin (i + 1): n elementti, tallenna i-arvo arr: iin [j] ja lisää j: n arvoa.
- Lisää i: n arvoa kussakin iteraatiossa.
- Tallenna viimeinen arr-arvo arvoon arr [j].
- Palauta lopuksi ryhmän uusi koko eli j. Yksilölliset elementit tallennetaan ryhmään indeksistä 0 j-1.
Merkintä: Tämän ratkaisun aikakompleksi on O (n).
C ++ -ohjelma päällekkäisten elementtien poistamiseksi lajitellusta taulukosta
Alla on C ++ -ohjelma päällekkäisten elementtien poistamiseksi lajitellusta taulukosta:
// C ++ -ohjelma päällekkäisten elementtien poistamiseksi lajitellusta taulukosta
#sisältää
käyttämällä nimitilaa vakio;
// Toiminto päällekkäisten elementtien poistamiseksi lajitellusta taulukosta
int removeDuplicateElements (int arr [], int-koko)
{
int j = 0;
for (int i = 0; i {
// Jos i-elementti ei ole yhtä suuri kuin (i + 1): s elementti,
// tallenna sitten i-arvo arr: iin [j]
jos (arr [i]! = arr [i + 1])
{
arr [j] = arr [i];
j ++;
}
}
// Arr: n viimeisen arvon tallentaminen arr: iin [j]
arr [j ++] = arr [koko-1];
paluu j;
}
void printArrayElements (int arr [], int-koko)
{
for (int i = 0; i{
cout << arr [i] << "";
}
cout << endl;
}
int main ()
{
int arr1 [] = {1, 1, 1, 2, 4, 6, 8, 8, 9, 9};
int size1 = sizeof (arr1) / sizeof (arr1 [0]);
cout << "Initial Array:" << endl;
printArrayElements (arr1, koko1);
cout << "Taulukko kaksoiskappaleiden poistamisen jälkeen:" << endl;
size1 = removeDuplicateElements (arr1, koko1);
printArrayElements (arr1, koko1);
int arr2 [] = {1, 1, 2, 2, 3, 3, 4, 4, 5, 5};
int size2 = sizeof (arr2) / sizeof (arr2 [0]);
cout << "Initial Array:" << endl;
printArrayElements (arr2, koko2);
cout << "Taulukko kaksoiskappaleiden poistamisen jälkeen:" << endl;
size2 = removeDuplicateElements (arr2, koko2);
printArrayElements (arr2, koko2);
int arr3 [] = {10, 12, 12, 14, 16, 16, 18, 19, 19};
int size3 = sizeof (arr3) / sizeof (arr3 [0]);
cout << "Initial Array:" << endl;
printArrayElements (arr3, koko3);
cout << "Taulukko kaksoiskappaleiden poistamisen jälkeen:" << endl;
size3 = removeDuplicateElements (arr3, koko3);
printArrayElements (arr3, koko3);
paluu 0;
}
Tuotos:
Alkuperäinen taulukko:
1 1 1 2 4 6 8 8 9 9
Taulukko kaksoiskappaleiden poistamisen jälkeen:
1 2 4 6 8 9
Alkuperäinen taulukko:
1 1 2 2 3 3 4 4 5 5
Taulukko kaksoiskappaleiden poistamisen jälkeen:
1 2 3 4 5
Alkuperäinen taulukko:
10 12 12 14 16 16 18 19 19
Taulukko kaksoiskappaleiden poistamisen jälkeen:
10 12 14 16 18 19
Python-ohjelma päällekkäisten elementtien poistamiseksi lajitellusta taulukosta
Alla on Python-ohjelma päällekkäisten elementtien poistamiseksi lajitellusta taulukosta:
# Python-ohjelma päällekkäisten elementtien poistamiseksi lajitellusta taulukosta
def removeDuplicateElements (arr, koko):
j = 0
i: lle alueella (koko-1):
jos arr [i]! = arr [i + 1]:
arr [j] = arr [i]
j = j + 1
arr [j] = arr [koko-1]
j = j + 1
paluu j
def printListElements (arr, koko):
i: lle alueella (koko):
tulosta (arr [i], loppu = "")
Tulosta()
arr1 = [1, 1, 1, 2, 4, 6, 8, 8, 9, 9]
koko1 = len (arr1)
tulosta ("Alustava taulukko:")
printListElements (arr1, koko1)
tulosta ("Taulukko kaksoiskappaleiden poistamisen jälkeen:")
size1 = removeDuplicateElements (arr1, koko1)
printListElements (arr1, koko1)
arr2 = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
koko2 = len (arr2)
tulosta ("Alustava taulukko:")
printListElements (arr2, koko2)
tulosta ("Taulukko kaksoiskappaleiden poistamisen jälkeen:")
size2 = removeDuplicateElements (arr2, koko2)
printListElements (arr2, koko2)
arr3 = [10, 12, 12, 14, 16, 16, 18, 19, 19]
size3 = len (arr3)
tulosta ("Alustava taulukko:")
printListElements (arr3, koko3)
tulosta ("Taulukko kaksoiskappaleiden poistamisen jälkeen:")
size3 = removeDuplicateElements (arr3, koko3)
printListElements (arr3, koko3)
Tuotos:
Alkuperäinen taulukko:
1 1 1 2 4 6 8 8 9 9
Taulukko kaksoiskappaleiden poistamisen jälkeen:
1 2 4 6 8 9
Alkuperäinen taulukko:
1 1 2 2 3 3 4 4 5 5
Taulukko kaksoiskappaleiden poistamisen jälkeen:
1 2 3 4 5
Alkuperäinen taulukko:
10 12 12 14 16 16 18 19 19
Taulukko kaksoiskappaleiden poistamisen jälkeen:
10 12 14 16 18 19
Liittyvät: Johdatus yhdistämisen lajittelualgoritmiin
JavaScript-ohjelma päällekkäisten elementtien poistamiseksi lajitellusta taulukosta
Alla on JavaScript-ohjelma päällekkäisten elementtien poistamiseksi lajitellusta taulukosta:
// JavaScript-ohjelma päällekkäisten elementtien poistamiseksi lajitellusta taulukosta
// Toiminto päällekkäisten elementtien poistamiseksi lajitellusta taulukosta
toiminto removeDuplicateElements (arr, koko)
{
olkoon j = 0;
for (olkoon i = 0; i {
// Jos i-elementti ei ole yhtä suuri kuin (i + 1): s elementti,
// tallenna sitten i-arvo arr: iin [j]
jos (arr [i]! = arr [i + 1])
{
arr [j] = arr [i];
j ++;
}
}
// Arr: n viimeisen arvon tallentaminen arr: iin [j]
arr [j ++] = arr [koko-1];
paluu j;
}
funktio printArrayElements (arr, koko) {
for (olkoon i = 0; idocument.write (arr [i] + "");
}
document.write ("
");
}
var arr1 = [1, 1, 1, 2, 4, 6, 8, 8, 9, 9];
var koko1 = arr1.pituus;
document.write ("Alustava taulukko:" + "
");
printArrayElements (arr1, koko1);
document.write ("Taulukko kaksoiskappaleiden poistamisen jälkeen:" + "
");
size1 = removeDuplicateElements (arr1, koko1);
printArrayElements (arr1, koko1);
var arr2 = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5];
var koko2 = arr2.pituus;
document.write ("Alustava taulukko:" + "
");
printArrayElements (arr2, koko2);
document.write ("Taulukko kaksoiskappaleiden poistamisen jälkeen:" + "
");
size2 = removeDuplicateElements (arr2, koko2);
printArrayElements (arr2, koko2);
var arr3 = [10, 12, 12, 14, 16, 16, 18, 19, 19];
var koko3 = arr3.pituus;
document.write ("Alustava taulukko:" + "
");
printArrayElements (arr3, koko3);
document.write ("Taulukko kaksoiskappaleiden poistamisen jälkeen:" + "
");
size3 = removeDuplicateElements (arr3, koko3);
printArrayElements (arr3, koko3);
Tuotos:
Liittyvät: Kuinka löytää merkkijonossa useimmin esiintyvä merkki
Alkuperäinen taulukko:
1 1 1 2 4 6 8 8 9 9
Taulukko kaksoiskappaleiden poistamisen jälkeen:
1 2 4 6 8 9
Alkuperäinen taulukko:
1 1 2 2 3 3 4 4 5 5
Taulukko kaksoiskappaleiden poistamisen jälkeen:
1 2 3 4 5
Alkuperäinen taulukko:
10 12 12 14 16 16 18 19 19
Taulukko kaksoiskappaleiden poistamisen jälkeen:
10 12 14 16 18 19
Harjoittele merkkijono- ja taulukko-ongelmia seuraavaan haastatteluun
Merkkijono- ja matriisiongelmat ovat kysyttyjä aiheita teknisissä haastatteluissa.
Jos haluat olla mahdollisimman valmistautunut, sinun on harjoitettava joitain usein kysyttyjä ongelmia, kuten kuinka tarkistaa, onko merkkijono palindromi, miten tarkistaa, onko merkkijono anagrammi, etsi merkkijonossa yleisimmin esiintyvä merkki, taulun kääntäminen, taulukkoon perustuvat algoritmit lajittelu ja haku, merkkijonon kääntäminen jne.
Opi kääntämään merkkijono taaksepäin kolmella eri kielellä.
Lue seuraava
- Ohjelmointi
- JavaScript
- Python
- Koodausoppaat
Yuvraj on tietojenkäsittelytieteen perustutkinto-opiskelija Delhin yliopistossa Intiassa. Hän on intohimoisesti Full Stack -verkkokehityksestä. Kun hän ei kirjoita, hän tutkii eri tekniikoiden syvyyttä.
tilaa uutiskirjeemme
Liity uutiskirjeeseemme, jossa on teknisiä vinkkejä, arvosteluja, ilmaisia e-kirjoja ja erikoistarjouksia!
Tilaa napsauttamalla tätä