Inhaltsverzeechnes[Verstoppen][Show]
- 1. Wéi definéiert Dir eng Array?
- 2. Dynamesch Arrays: Wat sinn se? Wat ënnerscheet se vun Basic Arrays?
- 3. Wéi variéieren en Array an en Dictionnaire vuneneen?
- 4. Lëscht e puer vun de Virdeeler an Nodeeler vun Arrays.
- 5. Wat heescht "Sparse Array" bezitt?
- 6. Wéini géift Dir eng verlinkt Lëscht iwwer eng Array wielen?
- 7. Wat ënnerscheet eng indexéiert Array vun engem assoziativen Array?
- 8. Wéi eng Virdeeler huet Heap iwwer zortéiert Arrays?
- 9. Kënne mir d'Gréisst vun der Array negativ definéieren?
- 10. Wéi fannt Dir déi fehlend ganz Zuel an engem 1 bis 100-Elementarray?
- 11. Wéi fannt Dir den Index vun engem Element an enger Array?
- 12. Wéi kënnt Dir e spezifescht Element aus enger Array lass kréien?
- 13. Wéi kann d'Gläichheet vun zwee Arrays verifizéiert ginn?
- 14. Wa mir iwwer Arrays diskutéieren, wat mengt Dir mat den Ausdréck "Dimensioun" an "Subscript"?
- Coding Interview Froen
- 15. Sich no engem Pair an engem Array, deen déi spezifizéiert Zomm huet
- 16. Binär Array Sortéierung mat linearer Zäit
- 17. Fannt de gréissten zwee-int Produkt an enger Array.
- 18. Wéi all d'Nullen vun der Array op d'Enn ze réckelen
- 19. Wéi eng Array mat zwee Entréen ze sortéieren, déi an enger Operatioun geschalt ginn.
- 20. Wéi kombinéieren zwee zortéiert Arrays am Plaz.
- 21. Wéi eng Rei vun Elementer an alternéierend héich an niddreg Positiounen nei bestellen?
- 22. Wéi all Element vun engem Array ze ersetzen ouni en Divisiounsbedreiwer mam Produkt vun all Element an der Array ze benotzen?
- 23. Fannt dat komeschst Element an enger Array an der logarithmescher Zäit
- 24. Wéi kritt een dat spéider gréissert Element fir all Element an engem kreesfërmegen Array?
- 25. Fannt d'Inversiounszuel vun engem Array?
- 26. Wat ass de Ree Waasser Trapping Problem?
- Konklusioun
Kodéierungsinterviews enthalen eng Serie vun DSA Froen. Dir sollt qualifizéiert sinn mat Arrays wann Dir prett sidd fir Ären zukünftege Tech Interview mat FAANG oder engem aneren Tier-1 Tech Geschäft.
An de meeschte Kodéierungsinterviews kënnt et op der zweeter Plaz op Strings. En Array ass eng Gruppéierung vu verwandte Datenelementer, déi an der Noperschaft zueneen an der Erënnerung gehale ginn.
Well se mat all Programméierungssprooche verbonne sinn, wéi C, C++, Java, Python, Perl, a Ruby, si si iwwerall. Weiderliesen fir e puer Praxis Kodéierung Erausfuerderungen an Interview Froen an Äntwerten baséiert op Arrays.
Python gëtt an dësem Post benotzt fir d'Kodéierungsprobleemer unzegoen well et einfach ass ze benotzen, ze verstoen, a muss fir déi meescht vun eis vertraut sinn.
Loosst ufänken.
1. Wéi definéiert Dir eng Array?
- Eng Grupp vu verwandte Datentypen ass eng Array.
- Arrays sinn ëmmer fix.
- Déiselwecht Aart vu Variabel gëtt op verschiddene Plazen vun Arrayobjekte gelagert.
- Primitiv Typen an Objektreferenze si béid kompatibel mat deem.
2. Dynamesch Arrays: Wat sinn se? Wat ënnerscheet se vun Basic Arrays?
Déi automatesch Skaléierung déi dynamesch Arrays (och als wuesse Arrays bezeechent, resizable Arrays, verännerbar Arrays, oder ArrayLists am Java) ubidden ass e wesentleche Virdeel.
Dir musst ëmmer wëssen wéivill Elementer Ären Array am Viraus späichert well Arrays eng fix Gréisst hunn. Eng dynamesch Array, op der anerer Säit, wiisst wéi Dir zousätzlech Memberen derbäi setzt, sou datt Dir seng exakt Gréisst net virdru wësse musst.
3. Wéi variéieren en Array an en Dictionnaire vuneneen?
Dëst ass e Fundamental-baséiert Array vun Interview Froen déi regelméisseg gefrot ginn. Déi folgend sinn déi Schlëssel Ënnerscheeder tëscht Arrays an Dictionnairen:
- Eng Array ass eng bestallt Lëscht vun ähnlechen Elementer. Wierderbuch, op der anerer Säit, huet Schlësselwäertpaaren.
- Array Gréissten kënnen dynamesch änneren. Esou dynamesch Iddien existéieren net an Dictionnairen.
- Ier Dir en Array benotzt, muss seng Gréisst spezifizéiert ginn. Wierderbuchgréissten brauchen net personaliséiert ze ginn.
- Benotzt d'Redim Ausso wann Dir d'Gréisst vun der Array ausbaue wëllt. An Dictionnairen kann en Element ouni Deklaratioun dobäigesat ginn.
4. Lëscht e puer vun de Virdeeler an Nodeeler vun Arrays.
Virdeeler:
- Arrays kënnen eng Zuel vun Elementer gläichzäiteg sortéieren.
- aner Daten Strukturen, wéi als Stack, Schlaangen, verlinkte Lëschten, Beem, Grafiken, etc., kënnen an enger Array ëmgesat ginn.
- En Index ka benotzt ginn fir en Element vun enger Array z'erreechen.
Nodeeler:
- D'Gréisst vun enger Array muss am Viraus deklaréiert ginn. Am Moment vun der Array Deklaratioun si mir awer vläicht net bewosst vun der Gréisst déi mir brauchen.
- D'Struktur vun der Array ass statesch. Et implizéiert datt d'Arraygréisst ëmmer fixéiert ass an datt d'Erënnerungsallokatioun net erhéicht oder reduzéiert ka ginn.
5. Wat heescht "Sparse Array" bezitt?
E sparse Array ass en Datearray dee vill Entréen mat Nullwäerter huet. Am Géigesaz, enthält eng dichte Array d'Majoritéit vu sengen Elementer mat Net-Null Wäerter. D'Indeze vun enger spatzen Array, déi Zuelen an Objete konvertéiert, kënnen Lücken enthalen. Am Verglach mat engem HashMap si se méi Erënnerungseffizient.
6. Wéini géift Dir eng verlinkt Lëscht iwwer eng Array wielen?
Wann Dir verlinkte Lëschte benotzt anstatt Arrays, betruecht:
- Dir braucht keng Elementer fir zoufälleg Zougang ze hunn.
- Wou temporär Prévisibilitéit essentiell ass, braucht Dir konstante-Zäit Insertiounen an Entfernungen aus der Lëscht.
- Fir eng Prioritéitschlaang ze kreéieren, musst Dir vläicht Elementer am Zentrum vun der Lëscht setzen.
- Dir hutt keng Ahnung wéi laang d'Lëscht wäert sinn. Wann d'Arraygréisst eropgeet, musst Dir d'Erënnerung nei deklaréieren an duplizéieren, grad wéi mat einfachen Arrays.
7. Wat ënnerscheet eng indexéiert Array vun engem assoziativen Array?
Déi primär Ënnerscheeder tëscht assoziativen an indexéierte Arrays sinn an der folgender Tabell opgelëscht.
- E Schlësselwäertpaar am Text oder numeresche Format gëtt benotzt fir en assoziativen Array ze sortéieren. D'Schlëssel vun der indexéierter Array sinn all numeresch, an all Schlëssel ass mat engem bestëmmte Wäert verbonnen.
- An engem assoziativen Array kann de Schlëssel e String sinn. Indexéiert Array mat ganzer Schlësselen ab 0.
- Eng zwee-Kolonn Tabelle mimics d'Behuele vun engem assoziativen Array. Ähnlech wéi eng eenzeg Kolonn Tabelle sinn indexéiert Arrays.
- Kaarten sinn en assoziativen Array-Typ. En Index Array ass keng Kaart.
8. Wéi eng Virdeeler huet Heap iwwer zortéiert Arrays?
D'Zäiteffizienz fir Heap iwwer Sorted Arrays ze benotzen ass de Schlësselvirdeel. Wärend Heapoperatioune méi séier sinn, erfuerdert d'Zortéierung vun engem Array vill Zäit. E Koup kann dat klengst Element wesentlech méi séier entdecken wéi eng Array ka zortéiert ginn.
Eng gegebene Sammlung vun Zuelen kann op eng vun zwou Weeër arrangéiert ginn mat sortéierten Arrays. Op der anerer Säit, fir eng bestëmmte Sammlung vun Zuelen, kann et méi wéi ee potenziell Koup sinn.
9. Kënne mir d'Gréisst vun der Array negativ definéieren?
Nee, mir kënnen net en negativt Ganzt als d'Gréisst vun enger Array definéieren. Et gëtt kee Kompiléierungszäitfehler wa mir deklaréieren. Beim Runtime wäerte mir awer eng NegativeArraySizeException begéinen.
10. Wéi fannt Dir déi fehlend ganz Zuel an engem 1 bis 100-Elementarray?
Den Total vun der Serie kann berechent ginn andeems Dir déi folgend Funktioun applizéiert: n (n + 1) / 2
Nëmme wann d'Array keng Duplikaten huet oder méi wéi een ganzt Zuel fehlt, funktionnéiert dës Funktioun. Ob eng Array duplizéiert Elementer huet, kënnt Dir d'Array sortéieren fir ze kucken ob et Elementer sinn déi gläichwäerteg sinn.
11. Wéi fannt Dir den Index vun engem Element an enger Array?
Den Index vun engem Element kann iwwer eng linear oder binär Sich entdeckt ginn. Bis et de Match vum erfuerderlechen Element lokaliséiert, schléit eng linear Sichfunktioun iwwer all Element an enger Array. Et gëtt den Index zréck wann et de passenden Element lokaliséiert. Dofir ass d'temporal Komplexitéit vun der linearer Sich O. (n). Souwuel eng zortéiert wéi och eng onsortéiert Array ka linear Sich benotzen.
Mat enger binärer Sich, déi d'Array kontinuéierlech an der Halschent deelt, bis de Median vum Intervall dem erfuerderlechen Element entsprécht an den Index ubitt, kënnt Dir den Index vum Element kréien wann d'Array zortéiert ass. Dofir ass déi temporär Komplexitéit vun der binärer Sich O. (log n).
12. Wéi kënnt Dir e spezifescht Element aus enger Array lass kréien?
Well Dir Elementer net einfach aus der ursprénglecher Array läschen kann, well se fixe Sets mat enger definéierter Gréisst sinn, sicht den Interviewer Iech eng aner Approche ze proposéieren an de Problem ze këmmeren deen d'Fro opstellt. De beschte Wee vun der Handlung ass eng nei Array ze maachen fir en Element ze läschen. Dir kënnt d'Elementer vun der éischter Array an dësem Array duplizéieren an nëmmen dat Element enthalen dat Dir wëllt läschen.
Eng aner Strategie beinhalt d'Zilelement an der Array ze fannen an dann d'Uerdnung vun allen Elementer ëmgedréint, déi riets vum Zilelement sinn.
13. Wéi kann d'Gläichheet vun zwee Arrays verifizéiert ginn?
Dir musst éischt d'Längt vun den zwee geliwwert Arrays verifizéieren. Déi passend Elementer vu béide Arrays gi verglach wann hir Längt gläich sinn. Déi zwee Arrays ginn als gläich ugesinn. wann all Paar Komponenten an all Korrespondenz gläich ass. Dës Approche ass net ugeroden d'Gläichheet vun zwee Arrays ze kontrolléieren wann d'Arrays grouss sinn, well et vill Zäit dauert. Dir kënnt och d'Equals () Method benotzen, déi an der Arrays Klass abegraff ass, awer wann den Interviewer Iech freet zwee Arrays ze vergläichen ouni agebaute Methoden ze benotzen, wäert dës Manéier nëtzlech sinn.
14. Wa mir iwwer Arrays diskutéieren, wat mengt Dir mat den Ausdréck "Dimensioun" an "Subscript"?
D'"Dimensioun" vun engem Array ass d'Zuel vun den Indizes, oder Abonnementer, déi néideg sinn fir all eenzel Member ze identifizéieren. Abonnementer an Dimensiounen kënnen onkloer sinn. Eng Dimensioun ass eng Beschreiwung vun der Palette vun erlaabt Schlësselen, wärend en Abonnement eng Zuel ass. Et gëtt just een Abonnement erfuerderlech fir all Array Dimensioun.
Zum Beispill huet d'Array arr [10] [5] zwou Dimensiounen. Gréissten 10 op engem an 5 op der anerer. Fir seng Komponenten unzegoen, brauch Dir zwee Abonnementer. Béid sinn tëscht 0 an 4; een tëscht 0 an 9, inklusiv.
Coding Interview Froen
15. Sich no engem Pair an engem Array, deen déi spezifizéiert Zomm huet
Zum Beispill,
Input:
- Zuelen = [8, 7, 2, 5, 3, 1]
- Zil = 10
Ausgab:
- Pair fonnt (8, 2)
- Or
- Pair fonnt (7, 3)
Input:
- Zuelen = [5, 2, 6, 8, 1, 9]
- Zil = 12
Ausgab:
- Pair net fonnt
16. Binär Array Sortéierung mat linearer Zäit
Sortéiert eng binär Array an linearer Zäit an an engem fixen Gebitt. D'Ausgab sollt als éischt all Nullen weisen, dann all.
Zum Beispill,
- Input: { 1, 0, 1, 0, 1, 0, 0, 1 }
- Ausgang: { 0, 0, 0, 0, 1, 1, 1, 1 }
Eng einfach Approche wier d'Gesamtzuel vun 0s vun der Array ze berechnen, soen k, an dann déi éischt k Indizes an der Array mat 0s an déi verbleiwen Indizes mat 1 ze fëllen. Array k, fëllt déi lescht k Indizes am Array mat 1, a loosst de Rescht vun den Indizes mat 1 gefëllt.
Déi gegebene Approche huet eng O (n) Zäit Komplexitéit a benotzt keng zousätzlech Späichere, wou n d'Gréisst vum Input ass.
17. Fannt de gréissten zwee-int Produkt an enger Array.
Fannt de gréisste Produkt vun zwou Zuelen an enger ganzer Array.
Denkt un d'Array 10 3 5 6 2 als Beispill. De (-10, -3) oder (5, 6) Pair ass dat héchst Produkt.
Iwwer all Elementkombinatioun ze denken an hiert Produkt erauszefannen ass eng domm Approche. Wann d'Produkt vun der aktueller Pair méi grouss ass wéi de maximale Produkt bis elo, aktualiséieren de Maximumprodukt. Dréckt d'Komponente vum Endprodukt d'lescht.
Déi uewe genannte Léisung, wou n de Betrag vum Input ass, huet eng Zäitkomplexitéit vun O(n2) an hëlt net méi Plaz op.
18. Wéi all d'Nullen vun der Array op d'Enn ze réckelen
Beweegt all d'Nullen an enger ganzer Array bis zum Enn. D'Äntwert soll e konstante Raum benotzen an d'relativ Uerdnung vun de Komponente vun der Array erhalen.
Input: {1,2,3,0,8,0,4,7}
D'Ausgab ass {1,2,3,8,4,7,0,0}
Setzt d'Element op der folgender verfügbarer Positioun am Array wann dat aktuellt Element net null ass. Fëllt all verbleiwen Indizes mat 0 wann d'Artikelen vun der Array all veraarbecht goufen.
Déi viregt Léisung huet eng O (n) Zäitkomplexitéit, wou n d'Gréisst vum Input ass.
19. Wéi eng Array mat zwee Entréen ze sortéieren, déi an enger Operatioun geschalt ginn.
Sortéiert eng Array an der linearer Zäit mat zwee geschaaften Elementer an eng Array mat all sengen Elementer an opsteigend Uerdnung arrangéiert. Maacht wéi wann d'Array keng Duplikate enthält.
Input:= [1,9,3,4,7,2] oder [9,3,7,2,1,4] oder [2,4,1,7,3,9]
Ausgang: = [1,2,3,4,7,9]
Ugefaange mam zweeten Element an der Array ass d'Zil all Element mat sengem Virgänger ze vergläichen. D'Positioun vum Sträit gëtt gespäichert andeems Dir zwee Pointer hëlt, x, an y.
Update x op den Index vum fréiere Element an y op den Index vum aktuellen Element wann dee fréiere méi grouss ass wéi dee Leschten. Update y op den Index vum aktuellen Element wann et sech erausstellt datt dat viregt Element méi grouss ass wéi dat aktuellt Element.
Endlech, schalt d'Elementer op den Index x an y wann mir all ugrenzend Pair vun Elementer fäerdeg hunn.
Wéinst der Tatsaach, datt déi uewe genannte Method nëmmen en eenzegen Scan vun der Input-Array vun der Gréisst n ausféiert, ass seng Zäitkomplexitéit O(n). Keen zousätzleche Raum ass néideg fir d'Léisung.
20. Wéi kombinéieren zwee zortéiert Arrays am Plaz.
Fusioun d'Elementer vun den Arrays X[] an Y[] - zwee zortéiert Arrays mat der Gréisst m an n all - andeems Dir déi zortéiert Uerdnung behalen, dat heescht andeems Dir X[] mat den éischte m klengsten Elementer fëllt an Y[] mat der Fëllung Rescht Elementer.
Wann en Element an der Array X[] schonn op der richteger Positioun ass (dh deen deen am klengste vun de verbleiwen Elementer ass), ignoréiert et; soss, ersetzt et mat dem klengsten Element, deen och den éischte Member vum Y[] ass. Fir déi zortéiert Uerdnung nom Tauschen ze behalen, transferéiert d'Element (elo bei Y[0]) op seng richteg Plaz an Y[].
D'Gréisst vun der éischter Array ass m an d'Gréisst vun der zweeter Array ass n, an d'Zäitkomplexitéit ass O(mn).
21. Wéi eng Rei vun Elementer an alternéierend héich an niddreg Positiounen nei bestellen?
Rearrangéiert eng ganz Zuel Array sou datt all spéider Member méi grouss ass wéi déi vireg an déi folgend Elementer. Ugeholl datt d'Array keng duplizéiert Elementer enthält.
D'Array sortéieren oder zousätzlech Plaz benotzen ass net néideg fir eng effektiv Approche. De Plang ass, fir unzefänken, den zweete Member vun der Array a geet ëm zwee erop fir all Loop Iteratioun.
Tauscht d'Komponente wann dat lescht Element dat éischt ass. An enger ähnlecher Aart, schalt béid Elementer wann dat folgend Element méi grouss ass wéi dat aktuellt Element. Mir kréien de gewënschte Array, dee mat de spezifizéierte Restriktiounen entsprécht um Schluss vun der Loop.
22. Wéi all Element vun engem Array ze ersetzen ouni en Divisiounsbedreiwer mam Produkt vun all Element an der Array ze benotzen?
Ouni den Divisiounsbedreiwer ze benotzen, ersetzt all Element an enger ganzer Array mam Produkt vun allen aneren Elementer.
A linearer Zäit a konstante Raum kënne mir Rekursioun benotze fir dëst Thema unzegoen. D'Produkter vun all Element an der rietser Subarray rekursiv ausrechnen an de lénksen Subarray Produkt als Funktiounsparameter passéieren ass d'Notioun.
D'Zäitkomplexitéit ass O(n).
23. Fannt dat komeschst Element an enger Array an der logarithmescher Zäit
Mat enger ganzer Array an där all ausser ee Member souguer Zuelen vun Optriede hunn, ass de Problem ze bestëmmen wéi oft dëst Element erschéngt. Fannt dat komesch optriedend Element an der logarithmescher Zäit a konstante Raum wann déiselwecht Elementer a Pairen an der Array optrieden an et kann ni méi wéi zwee Instanzen vun engem bestëmmten Element an enger Zeil sinn.
D'XOR Operatioun erlaabt eis dëst Thema an der linearer Zäit ze léisen. D'Zil ass all Element an der Array ze XOR. Nëmmen déi komesch optrieden Elementer bleiwen no der souguer optrieden Elementer all aner aus.
Dëse Problem ka souguer an der O(log(n)) Zäit geléist ginn.
24. Wéi kritt een dat spéider gréissert Element fir all Element an engem kreesfërmegen Array?
Dat nächst gréissert Element fir all Element an enger kreesfërmeger ganzer Array soll lokaliséiert sinn. Dat éischt gréissert Ganzt no engem Element x an der Array ass dat spéider gréissert Element vun deem Element.
Vu riets op lénks kënne mir op Arrayartikelen operéieren. D'Zil ass fir all Element x ze schloen bis entweder de Stack eidel ass oder mir e méi héicht Element drop hunn. Setzt dat nächst gréissert Element vun x fir uewen um Stack ze erschéngen wann et geschitt.
25. Fannt d'Inversiounszuel vun engem Array?
Fannt d'total Unzuel vun Inversioune vun enger Array. E Paar I j) gëtt als Inversioun vun enger Array A bezeechent wann I j) an (A[i] > A[j]). Mir mussen all Paar vun dësen am Array zielen.
All Array Memberen zielen déi manner sinn wéi et op senger rietser Säit an d'Resultat op d'Ausgab bäidroen ass eng einfach Approche.
Dës Léisung huet eng O(n2) Komplexitéit, wou n d'Gréisst vum Input ass.
26. Wat ass de Ree Waasser Trapping Problem?
Déi meeschte Waasser ze fannen, déi an engem bestëmmte Set vu Baren mat enger Breet vun all Eenheet agespaart ka ginn, ass bekannt als de "Trapp Reen" Thema.
D'Zil ass déi héchst Bar ze bestëmmen déi lénks a riets vun all Bar plazéiert ka ginn. De Minimum vun de féierende Baren lénks a riets, manner wéi d'Héicht vun der aktueller Bar, ass d'Quantitéit u Waasser déi uewen op all Bar gespäichert ass.
Konklusioun
Am Verglach mat aneren Datestrukturthemen sinn Arrays méi einfach. Fir ace Array Interview Froen ze stellen, musst Dir e fundamentalt Verständnis vun Arrays hunn.
Dir sollt d'Fundamenter vun Arrays extensiv iwwerpréiwen, dorënner Array-Operatiounen (vum Erklärung / Schafe vun engem Array bis Zougang / Ännere vun Array-Artikelen), souwéi Programméierungskonzepter wéi Loops, Rekursioun a Basisbetreiber fir erfollegräich Array-Interview Froen ze beäntweren. Erkennt de Problem komplett.
Dir sollt Erklärung sichen wann Dir Froen hutt. Denkt drun d'Thema a méi handhabbar Deeler opzedeelen. Vergewëssert Iech datt Dir den Algorithmus am Kapp hutt ier Dir ufänkt ze programméieren; schreift et op oder visualiséiert et an engem Flowchart. fänken dann Code ze schreiwen.
Hannerlooss eng Äntwert