Enhavtabelo[Kaŝi][Montri]
- 1. Kiel vi difinas Array?
- 2. Dinamikaj Tabeloj: Kio Ili Estas? Kio distingas ilin de Bazaj Tabeloj?
- 3. Kiel tabelo kaj vortaro varias unu de la alia?
- 4. Listigu kelkajn el la avantaĝoj kaj malavantaĝoj de tabeloj.
- 5. Kion aludas "Sparse Array"?
- 6. Kiam vi elektus ligitan liston super tabelo?
- 7. Kio distingas indeksitan tabelon de asocieca tabelo?
- 8. Kiajn avantaĝojn havas Heap super ordigitaj tabeloj?
- 9. Ĉu ni povas difini la grandecon de la tabelo por esti negativa?
- 10. Kiel vi lokalizas la mankantan entjeron en 1 ĝis 100-elementa tabelo?
- 11. Kiel oni trovas la indekson de elemento en tabelo?
- 12. Kiel vi povas forigi specifan elementon de tabelo?
- 13. Kiel oni povas kontroli la egalecon de du tabeloj?
- 14. Kiam ni diskutas tabelojn, kion vi celas per la frazoj "Dimensio" kaj "Subskribo"?
- Kodigaj Intervjuaj Demandoj
- 15. Serĉu paron en tabelo, kiu havas la specifitan sumon
- 16. Binara tabelordigo kun lineara tempo
- 17. Trovu la plej grandan du-int-produkton en tabelo.
- 18. Kiel movi ĉiujn nulojn de la tabelo ĝis la fino
- 19. Kiel ordigi tabelon kun du enskriboj, kiuj estas ŝanĝitaj en unu operacio.
- 20. Kiel kombini du ordigitajn tabelojn en loko.
- 21. Kiel reordigi tabelon da eroj en alternaj altaj kaj malaltaj pozicioj?
- 22. Kiel anstataŭigi ĉiun elementon de tabelo sen uzi dividan operatoron per la produkto de ĉiu elemento en la tabelo?
- 23. Trovu la plej strangan elementon en tabelo en logaritma tempo
- 24. Kiel akiri la postan pli grandan elementon por ĉiu elemento en cirkla tabelo?
- 25. Trovi inversan nombron de tabelo?
- 26. Kio Estas la Problemo de Kaptado de Pluva Akvo?
- konkludo
Kodigaj intervjuoj enhavas serion de DSA-demandoj. Vi devus esti lerta pri aroj se vi prepariĝas por via venonta teknika intervjuo kun FAANG aŭ alia teknika komerco de Tier-1.
En la plej multaj kodaj intervjuoj, ĝi venas en dua loko al Strings. Tabelo estas grupiĝo de rilataj datenelementoj konservitaj en proksima proksimeco unu al la alia en memoro.
Ĉar ili estas konektitaj al ĉiuj programlingvoj, kiel C, C++, Java, Python, Perl kaj Ruby, ili estas ĉie. Daŭre legu por iuj praktikaj kodaj defioj kaj intervjuaj demandoj kaj respondoj bazitaj sur tabeloj.
Python estos uzata en ĉi tiu afiŝo por trakti la kodigajn aferojn ĉar ĝi estas simpla uzebla, komprenebla kaj devas esti konata al la plej multaj el ni.
Komencu.
1. Kiel vi difinas Array?
- Grupo de rilataj datumtipoj estas tabelo.
- Tabeloj ĉiam estas fiksitaj.
- La sama speco de variablo estas stokita en pluraj lokoj per tabelobjektoj.
- Primivaj tipoj kaj objektoreferencoj estas ambaŭ kongruaj kun ĝi.
2. Dinamikaj Tabeloj: Kio Ili Estas? Kio distingas ilin de Bazaj Tabeloj?
La aŭtomata skalo kiun dinamikaj tabeloj (ankaŭ nomataj kiel kreskeblaj tabeloj, regrandigeblaj tabeloj, ŝanĝeblaj tabeloj aŭ ArrayLists en Java) provizas estas grava avantaĝo.
Vi ĉiam devas scii kiom da elementoj via tabelo stokos anticipe ĉar tabeloj havas fiksan grandecon. Dinamika tabelo, aliflanke, kreskas dum vi aldonas pliajn membrojn al ĝi, do vi ne bezonas scii ĝian precizan grandecon antaŭe.
3. Kiel tabelo kaj vortaro varias unu de la alia?
Ĉi tio estas bazaĵo-bazita aro de intervjuaj demandoj, kiuj estas regule demanditaj. La sekvantaroj estas la ŝlosilaj distingoj inter tabeloj kaj vortaroj:
- Tabelo estas ordigita listo de similaj eroj. Vortaro, aliflanke, havas ŝlosil-valorajn parojn.
- Tabeloj povas ŝanĝiĝi dinamike. Tiaj dinamikaj ideoj ne ekzistas en vortaroj.
- Antaŭ ol uzi tabelon, ĝia grandeco devas esti specifita. Vortaraj grandecoj ne bezonas esti personecigitaj.
- Uzu la deklaron Redim se vi volas pligrandigi la grandecon de la tabelo. En vortaroj oni povas aldoni elementon sen deklaro.
4. Listigu kelkajn el la avantaĝoj kaj malavantaĝoj de tabeloj.
Avantaĝoj:
- Tabeloj povas ordigi kelkajn elementojn samtempe.
- aliaj datumstrukturoj, kiel kiel stakoj, vostoj, ligitaj listoj, arboj, grafikaĵoj, ktp., povas esti efektivigitaj en tabelo.
- Indekso povas esti uzata por atingi elementon de tabelo.
malavantaĝoj:
- La grandeco de tabelo devas esti deklarita anticipe. En la momento de tabeldeklaro, ni eble ne konscias pri la grandeco, kiun ni postulas.
- La strukturo de la tabelo estas senmova. Ĝi implicas ke tabelgrandeco ĉiam estas fiksita kaj ke memorasigno ne povas esti pliigita aŭ malpliigita.
5. Kion aludas "Sparse Array"?
Maldensa tabelo estas datuma tabelo, kiu havas multajn enirojn kun nulaj valoroj. En kontrasto, densa tabelo enhavas la plimulton de siaj eroj kun ne-nulaj valoroj. La indeksoj de malabunda tabelo, kiu konvertas nombrojn al objektoj, povas inkludi interspacojn. Kompare kun HashMap, ili estas pli memorefikaj.
6. Kiam vi elektus ligitan liston super tabelo?
Kiam vi uzas ligitajn listojn anstataŭ tabelojn, konsideru:
- Vi ne bezonas iujn ajn elementojn por havi hazardan aliron.
- Kie tempa antaŭvidebleco estas esenca, vi bezonas konstantajn enmetojn kaj forigojn el la listo.
- Por krei prioritatan vicon, vi eble bezonos meti erojn en la centron de la listo.
- Vi ne scias kiom longa estos la listo. Se la tabelgrandeco pliiĝas, vi devas re-deklari kaj duobligi memoron, same kiel ĉe simplaj tabeloj.
7. Kio distingas indeksitan tabelon de asocieca tabelo?
La primaraj distingoj inter asociecaj kaj indeksitaj tabeloj estas listigitaj en la sekva tabelo.
- Ŝlosil-valora paro en teksto aŭ nombra formato estas uzata por ordigi asocian tabelon. La ŝlosiloj de la indeksita tabelo estas ĉiuj nombraj, kaj ĉiu ŝlosilo estas ligita al klara valoro.
- En asocieca tabelo, la ŝlosilo povus esti ĉeno. Indeksita tabelo kun entjerŝlosiloj ekde 0.
- Du-kolumna tabelo imitas la konduton de asocieca tabelo. Simile al unu-kolumna tabelo estas indeksitaj tabeloj.
- Mapoj estas asocieca tabeltipo. Indeksa tabelo ne estas mapo.
8. Kiajn avantaĝojn havas Heap super ordigitaj tabeloj?
La tempa efikeco de utiligado de Heap over Sorted Arrays estas la ŝlosila avantaĝo. Dum amasoperacioj estas pli rapidaj, ordigi tabelon postulas multan tempon. Amaso povas malkovri la plej malgrandan elementon konsiderinde pli rapide ol tabelo povas esti ordigita.
Antaŭfiksita kolekto de nombroj povas esti aranĝita laŭ unu el du manieroj uzante Ordigitajn Tabelojn. Aliflanke, por antaŭfiksita kolekto de nombroj, povas ekzisti pli ol unu ebla amaso.
9. Ĉu ni povas difini la grandecon de la tabelo por esti negativa?
Ne, ni ne povas difini negativan entjeron kiel grandecon de tabelo. Ne estos kompiltempa eraro se ni deklaras. Ĉe rultempo, ni tamen renkontos NegativeArraySizeException.
10. Kiel vi lokalizas la mankantan entjeron en 1 ĝis 100-elementa tabelo?
La sumo de la serio povas esti kalkulita aplikante la sekvan funkcion: n (n + 1) / 2
Nur se la tabelo ne havas duplikatojn aŭ havas pli ol unu entjeron mankas, tiu funkcio funkcios. Ĉu tabelo havas duplikatajn elementojn, vi povas ordigi la tabelon por vidi ĉu ekzistas iuj elementoj ekvivalentaj.
11. Kiel oni trovas la indekson de elemento en tabelo?
La indekso de elemento povas esti malkovrita per linia aŭ binara serĉo. Ĝis ĝi lokalizas la kongruon de la bezonata elemento, lineara serĉfunkcio cirkulas super ĉiu kaj ĉiu elemento en tabelo. Ĝi resendas la indekson post kiam ĝi lokalizas la kongruan elementon. Sekve, la tempa komplekseco de la lineara serĉo estas O. (n). Kaj ordigita kaj neordigita tabelo povas uzi linearan serĉon.
Uzante binaran serĉon, kiu senĉese dividas la tabelon en duono ĝis la mediano de la intervalo kongruas kun la postulata elemento kaj provizas la indekson, vi povas akiri la indekson de la elemento se la tabelo estas ordigita. Sekve, la tempa komplekseco de la binara serĉo estas O. (log n).
12. Kiel vi povas forigi specifan elementon de tabelo?
Ĉar vi ne povas simple forigi elementojn de la originala tabelo ĉar ili estas fiksaj aroj kun difinita grandeco, la intervjuanto serĉas, ke vi sugestu alian aliron kaj traktu la problemon, kiun la demando levas. La plej bona agmaniero estas fari novan tabelon por forigi elementon. Vi povas duobligi la elementojn de la unua tabelo en ĉi tiu tabelo kaj nur inkluzivi la elementon, kiun vi volas forigi.
Alia strategio implikas trovi la celelementon en la tabelo kaj tiam inversigi la ordon de ĉiuj eroj kiuj estas dekstre de la celelemento.
13. Kiel oni povas kontroli la egalecon de du tabeloj?
Vi unue devas kontroli la longojn de la du provizitaj tabeloj. La kongruaj eroj de ambaŭ tabeloj estas komparitaj kiam iliaj longoj estas egalaj. La du tabeloj estos rigardataj kiel egalaj. se ĉiu paro de komponantoj en ĉiu korespondado estas egala. Ĉi tiu aliro ne estas konsilita kontroli la egalecon de du tabeloj se la tabeloj estas grandaj en grandeco ĉar ĝi prenos multe da tempo. Vi ankaŭ povas uzi la metodon equals() inkluzivita en la klaso Arrays, tamen, se la intervjuanto petas vin kompari du tabelojn sen uzi enkonstruitajn metodojn, ĉi tiu maniero estos utila.
14. Kiam ni diskutas tabelojn, kion vi celas per la frazoj "Dimensio" kaj "Subskribo"?
La "Dimensio" de tabelo estas la nombro da indeksoj, aŭ asignoj, necesaj por identigi ĉiun individuan membron. Abonoj kaj dimensioj povus esti neklaraj. Dimensio estas priskribo de la vico da permesitaj ŝlosiloj, dum subskribo estas nombro. Estas nur unu alineo necesa por ĉiu tabeldimensio.
Ekzemple, la tabelo arr[10][5] havas du dimensiojn. Grandecoj 10 sur unu kaj 5 sur la alia. Por trakti ĝiajn komponantojn, vi postulas du abonojn. Ambaŭ estas inter 0 kaj 4; unu inter 0 kaj 9, inkluzive.
Kodigaj Intervjuaj Demandoj
15. Serĉu paron en tabelo, kiu havas la specifitan sumon
Ekzemple,
Enigo:
- nombroj = [8, 7, 2, 5, 3, 1]
- celo = 10
eligo:
- Paro trovita (8, 2)
- Or
- Paro trovita (7, 3)
Enigo:
- nombroj = [5, 2, 6, 8, 1, 9]
- celo = 12
eligo:
- Paro ne trovita
16. Binara tabelordigo kun lineara tempo
Ordigi binaran tabelon en lineara tempo kaj en fiksa areo. La eligo devus montri ĉiujn nulojn unue, poste ĉiujn.
Ekzemple,
- Enigo: { 1, 0, 1, 0, 1, 0, 0, 1 }
- Eligo: { 0, 0, 0, 0, 1, 1, 1, 1}
Simpla aliro estus kalkuli la tutsumon de 0 de la tabelo, diru k, kaj tiam plenigi la unuajn k indeksojn en la tabelo per 0 kaj la ceteraj indeksoj per 1. Kiel alternativo, ni povus kalkuli kiom da 1oj estas totalaj en la tabelo. tabelo k, plenigu la lastajn k indeksojn en la tabelo per 1, kaj lasu la reston de la indeksoj plenigitaj per 0.
La donita aliro havas O(n) tempokompleksecon kaj uzas neniun kroman stokadon, kie n estas la grandeco de la enigaĵo.
17. Trovu la plej grandan du-int-produkton en tabelo.
Trovu la plej grandan produkton de du nombroj en entjera tabelo.
Pensu pri la tabelo 10 3 5 6 2 kiel ekzemplo. La (-10, -3) aŭ (5, 6) paro estas la plej alta produkto.
Pensi pri ĉiu kombinaĵo de elementoj kaj eltrovi ilian produkton estas malsaĝa aliro. Se la produkto de la nuna paro estas pli granda ol la maksimuma produkto akirita ĝis nun, ĝisdatigu la maksimuman produkton. Presu la komponantojn de la fina produkto laste.
La supra solvo, kie n estas la kvanto de la enigo, havas tempkompleksecon de O(n2) kaj ne okupas pli da spaco.
18. Kiel movi ĉiujn nulojn de la tabelo ĝis la fino
Movu ĉiujn nulojn en entjera tabelo ĝis la fino. La respondo devus eviti uzi konstantan spacon kaj konservi la relativan ordon de la komponentoj de la tabelo.
Enigo: {1,2,3,0,8,0,4,7}
Eligo estos {1,2,3,8,4,7,0,0}
Metu la elementon ĉe la sekva disponebla pozicio en la tabelo se la nuna elemento ne estas nulo. Plenigu ĉiujn ceterajn indeksojn per 0 post kiam la eroj de la tabelo ĉiuj estis prilaboritaj.
La antaŭa solvo havas O(n) tempokompleksecon, kie n estas la grandeco de la enigaĵo.
19. Kiel ordigi tabelon kun du enskriboj, kiuj estas ŝanĝitaj en unu operacio.
Ordigi tabelon en la lineara tempo donita du interŝanĝitajn erojn kaj tabelon kun ĉiuj ĝiaj elementoj aranĝitaj en kreskanta ordo. Ŝajnigu, ke la tabelo enhavas neniujn duplikatojn.
Enigo:= [1,9,3,4,7,2] aŭ [9,3,7,2,1,4] aŭ [2,4,1,7,3,9]
Eligo: = [1,2,3,4,7,9]
Komencante kun la dua elemento en la tabelo, la celo estas kompari ĉiun elementon kun sia antaŭulo. La pozicio de la disputo estas stokita prenante du montrilojn, x, kaj y.
Ĝisdatigu x al la indekso de la antaŭa elemento kaj y al la indekso de la nuna elemento se la unua estas pli granda ol la dua. Ĝisdatigu y al la indekso de la nuna elemento se rezultas, ke la antaŭa elemento estas pli granda ol la nuna elemento.
Fine, ŝanĝu la elementojn ĉe indeksoj x kaj y post kiam ni finis prilabori ĉiun apudan paron da elementoj.
Pro la fakto ke la menciita metodo nur elfaras ununuran skanadon de la eniga tabelo de grandeco n, ĝia tempokomplekseco estas O(n). Neniu plia ĉambro estas necesa por la solvo.
20. Kiel kombini du ordigitajn tabelojn en loko.
Kunfandi la erojn de tabeloj X[] kaj Y[]—du ordigitaj tabeloj de grandeco m kaj n ĉiu—retenante la ordordonon, tio estas, plenigante X[] per la unuaj m plej malgrandaj elementoj kaj plenigante Y[] per la ceteraj elementoj.
Se elemento en la tabelo X[] jam estas en la ĝusta pozicio (te, tiu, kiu estas la plej malgranda inter la ceteraj elementoj), ignoru ĝin; alie, anstataŭigu ĝin per la plej malgranda elemento, kiu ankaŭ hazarde estas la unua membro de Y[]. Por konservi la ordigitan ordon post interŝanĝado, translokigu la elementon (nun ĉe Y[0]) al ĝia ĝusta loko en Y[].
La grandeco de la unua tabelo estas m kaj la grandeco de la dua tabelo estas n, kaj la tempokomplekseco estas O(mn).
21. Kiel reordigi tabelon da eroj en alternaj altaj kaj malaltaj pozicioj?
Reordigu entjeran tabelon tiel ke ĉiu posta membro estas pli granda ol la antaŭaj kaj sekvaj elementoj. Supozu, ke la tabelo ne inkluzivas iujn ajn duplikatajn elementojn.
Ordigi la tabelon aŭ utiligi plian spacon ne estas necesaj por efika aliro. La plano estas, por komenci, la dua membro de la tabelo kaj iras supren je du por ĉiu buklo ripeto.
Interŝanĝu la komponantojn se la lasta elemento superas la unuan. Simile, ŝanĝu ambaŭ erojn se la sekva elemento estas pli granda ol la nuna elemento. Ni akiros la deziratan tabelon, kiu konformas al la specifitaj limigoj ĉe la konkludo de la buklo.
22. Kiel anstataŭigi ĉiun elementon de tabelo sen uzi dividan operatoron per la produkto de ĉiu elemento en la tabelo?
Sen uzi la dividan operatoron, anstataŭigu ĉiun elementon en entjera tabelo per la produkto de ĉiuj aliaj elementoj.
En lineara tempo kaj konstanta spaco, ni povas uzi rekursion por trakti ĉi tiun aferon. Rekurse kalkuli la produktojn de ĉiu elemento en la dekstra subbaro kaj pasi la maldekstran subbarprodukton kiel funkcioparametrojn estas la nocio.
La tempokomplekseco estas O(n).
23. Trovu la plej strangan elementon en tabelo en logaritma tempo
Donita entjera tabelo en kiu ĉiuj krom unu membro havas parajn nombrojn da okazoj, la problemo estas determini kiom da fojoj ĉi tiu elemento aperas. Trovu la neparan okazantan elementon en logaritma tempo kaj konstanta spaco se la samaj elementoj okazas en paroj en la tabelo kaj neniam povas esti pli ol du okazoj de donita elemento en vico.
La operacio XOR ebligas al ni solvi ĉi tiun problemon en lineara tempo. La celo estas XOR ĉiun elementon en la tabelo. Nur la neparaj okazantaj elementoj restas post kiam la paraj okazantaj elementoj nuligas unu la alian.
Ĉi tiu problemo eĉ povas esti solvita en O(log(n)) tempo.
24. Kiel akiri la postan pli grandan elementon por ĉiu elemento en cirkla tabelo?
La sekva pli granda elemento por ĉiu elemento en cirkla entjera tabelo devus esti lokita. La unua pli granda entjero post elemento x en la tabelo estas la posta pli granda elemento de tiu elemento.
De dekstre al maldekstre, ni povas funkcii sur tabeloj. La celo estas buklo por ĉiu elemento x ĝis aŭ la stako estas malplena aŭ ni havas pli altan elementon sur ĝi. Agordu la sekvan pli grandan elementon de x por aperi supre de la stako kiam ĝi faros.
25. Trovi inversan nombron de tabelo?
Trovu la tutsumon de inversioj de tabelo. Paro I j) estas inverso de tabelo A se I j) kaj (A[i] > A[j]). Ni devas kalkuli ĉiun paron de ĉi tiuj en la tabelo.
Nombri ĉiujn tabelmembrojn kiuj estas pli malmultaj ol ĝi dekstre kaj aldoni la rezulton al la eligo estas simpla aliro.
Ĉi tiu solvo havas O(n2) kompleksecon, kie n estas la grandeco de la enigaĵo.
26. Kio Estas la Problemo de Kaptado de Pluva Akvo?
Trovi la plej multe da akvo kiu povas esti kaptita en antaŭfiksita aro de stangoj kun larĝo de unu unuo ĉiu estas konata kiel la "kapta pluvokvanto-" temo.
La celo estas determini la plej altan stangon kiu povas esti metita maldekstren kaj dekstren de ĉiu stango. La minimumo de la gvidaj stangoj maldekstren kaj dekstren, malpli la altecon de la nuna stango, estas la kvanto de akvo kiu estas stokita sur la supro de ĉiu stango.
konkludo
Kompare al aliaj datumstrukturaj temoj, tabeloj estas pli simplaj. Por fari intervjuajn demandojn, vi devas havi fundamentan komprenon pri tabeloj.
Vi devas vaste revizii la fundamentojn de tabeloj, inkluzive de tabelaj operacioj (de deklarado/kreado de tabelo ĝis aliro/modifado de tabeloj), same kiel programado de konceptoj kiel bukloj, rekursio kaj bazaj funkciigistoj por sukcese respondi tabelajn intervjudemandojn. Rekonu la aferon tute.
Vi devus serĉi klarigojn se vi havas demandojn. Pensu pri dividi la aferon en pli regeblajn partojn. Certiĝu, ke vi havas la algoritmon en menso antaŭ ol vi komencas programi; skribu ĝin aŭ bildigu ĝin en fluodiagramo. poste komencu skribi kodon.
Lasi Respondon