Table of Contents[Ferstopje][Toanje]
- 1. Hoe definiearje jo in Array?
- 2. Dynamic Arrays: Wat binne se? Wat ûnderskiedt se fan Basic Arrays?
- 3. Hoe ferskille in array en in wurdboek fan inoar?
- 4. List guon fan 'e foardielen en neidielen fan arrays.
- 5. Wat ferwiist "Sparse Array" nei?
- 6. Wannear soene jo in keppele list kieze boppe in array?
- 7. Wat ûnderskiedt in yndeksearre array fan in assosjatyf array?
- 8. Hokker foardielen hat Heap boppe sortearre arrays?
- 9. Kinne wy de grutte fan 'e array definiearje om negatyf te wêzen?
- 10. Hoe fine jo de ûntbrekkende hiele getal yn in 1 oan 100-elemint array?
- 11. Hoe fine jo de yndeks fan in elemint yn in array?
- 12. Hoe kinne jo in spesifyk elemint fan in array kwytreitsje?
- 13. Hoe kin twa arrays 'gelikens wurde ferifiearre?
- 14. As wy beprate arrays, wat bedoele jo mei de útdrukkingen "Dimensje" en "Subscript"?
- Kodearjen ynterviewfragen
- 15. Sykje in pear yn in rige dat hat de oantsjutte som
- 16. Binary array sortearring mei lineêre tiid
- 17. Fine de grutste twa-int produkt yn in rige.
- 18. Hoe kinne jo alle nullen fan 'e rige nei de ein ferskowe
- 19. Hoe sortearje in array mei twa yngongen dy't wurde oerskeakele yn ien operaasje.
- 20. Hoe kombinearje twa sortearre arrays yn plak.
- 21. Hoe kinne jo in array fan items opnij oarderje yn ôfwikseljende hege en lege posysjes?
- 22. Hoe kinne jo elk elemint fan in array ferfange sûnder in divyzjeoperator te brûken mei it produkt fan elk elemint yn 'e array?
- 23. Fine it ûneven elemint yn in rige yn logaritmyske tiid
- 24. Hoe krije jo it folgjende gruttere elemint foar elk elemint yn in sirkulêre array?
- 25. Fine in array syn inversion count?
- 26. Wat is it probleem mei it fallen fan reinwetter?
- Konklúzje
Kodearjende ynterviews befetsje in searje DSA-fragen. Jo moatte betûft wêze mei arrays as jo jo klear meitsje foar jo kommende tech-ynterview mei FAANG as in oar Tier-1-techbedriuw.
Yn de measte kodearring ynterviews komt it op it twadde plak nei Strings. In array is in groepearring fan besibbe gegevens-eleminten dy't yn 'e buert fan inoar yn it ûnthâld bewarre wurde.
Om't se ferbûn binne mei alle programmeartalen, lykas C, C++, Java, Python, Perl en Ruby, binne se oeral. Trochgean mei lêzen foar wat oefenje kodearring útdagings en ynterview fragen en antwurden basearre op arrays.
Python sil yn dizze post wurde brûkt om de kodearringproblemen oan te pakken, om't it ienfâldich is te brûken, te begripen en bekend te wêzen foar de measten fan ús.
Litte wy begjinne.
1. Hoe definiearje jo in Array?
- In groep besibbe gegevenstypen is in array.
- Arrays binne altyd fêst.
- Itselde soarte fan fariabele wurdt opslein op ferskate plakken troch array objekten.
- Primitive typen en objektreferinsjes binne der beide kompatibel mei.
2. Dynamic Arrays: Wat binne se? Wat ûnderskiedt se fan Basic Arrays?
De automatyske skaalfergrutting dy't dynamyske arrays (ek oantsjutten as groeibere arrays, resizable arrays, feroarebere arrays, of ArrayLists yn Java) leverje is in wichtich foardiel.
Jo moatte altyd witte hoefolle eleminten jo array sil opslaan foarôf sûnt arrays hawwe in fêste grutte. In dynamyske array, oan 'e oare kant, groeit as jo der ekstra leden oan taheakje, dus jo hoege de krekte grutte net foarôf te witten.
3. Hoe ferskille in array en in wurdboek fan inoar?
Dit is in basis-basearre array fan ynterviewfragen dy't regelmjittich wurde frege. De folgjende binne de wichtichste ûnderskiedingen tusken arrays en wurdboeken:
- In array is in oardere list fan ferlykbere items. Wurdboek, oan 'e oare kant, hat kaai-wearde-pearen.
- Arraygrutte kinne dynamysk feroarje. Sokke dynamyske ideeën besteane net yn wurdboeken.
- Foardat jo in array brûke, moat de grutte wurde oantsjutte. Wurdboekgrutte hoege net oanpast te wurden.
- Brûk de Redim-ferklearring as jo de grutte fan 'e array útwreidzje wolle. Yn wurdboeken kin in elemint tafoege wurde sûnder deklaraasje.
4. List guon fan 'e foardielen en neidielen fan arrays.
foardielen:
- Arrays kinne in oantal eleminten tagelyk sortearje.
- Oar datastrukturen, lykas as stapels, wachtrijen, keppele listen, beammen, grafiken, ensfh., kinne wurde ymplementearre yn in array.
- In yndeks kin brûkt wurde om in elemint fan in array te berikken.
neidielen:
- De grutte fan in array moat foarôf oanjûn wurde. Op it momint fan array-ferklearring binne wy miskien net bewust fan 'e grutte dy't wy nedich binne.
- De struktuer fan 'e array is statysk. It ymplisearret dat de arraygrutte altyd fêst is en dat ûnthâldallokaasje net ferhege of fermindere wurde kin.
5. Wat ferwiist "Sparse Array" nei?
In sparse array is in gegevensarray dy't in protte yngongen hat mei nul wearden. Yn tsjinstelling, in dichte array befettet de mearderheid fan syn items mei net-nul wearden. De yndeksen fan in sparse array, dy't nûmers omsette yn objekten, kinne gatten befetsje. Yn ferliking mei in HashMap binne se mear ûnthâld-effisjinter.
6. Wannear soene jo in keppele list kieze boppe in array?
As jo keppele listen brûke ynstee fan arrays, beskôgje dan:
- Jo hawwe gjin eleminten nedich om willekeurich tagong te hawwen.
- Wêr't tydlike foarsisberens essensjeel is, moatte jo ynfoegingen en ferwideringen fan konstante tiid fan 'e list hawwe.
- Om in prioriteitswachtrige te meitsjen, moatte jo miskien items yn it sintrum fan 'e list pleatse.
- Jo hawwe gjin idee hoe lang de list sil wêze. As de arraygrutte nimt ta, moatte jo ûnthâld opnij ferklearje en duplisearje, krekt as mei ienfâldige arrays.
7. Wat ûnderskiedt in yndeksearre array fan in assosjatyf array?
De primêre ûnderskiedingen tusken assosjatyf en yndeksearre arrays wurde neamd yn 'e folgjende tabel.
- In kaai-wearde-pear yn tekst of numerike opmaak wurdt brûkt om in assosjatyf array te sortearjen. De kaaien fan 'e yndeksearre array binne allegear numerike, en elke kaai is ferbûn mei in ûnderskate wearde.
- Yn in assosjatyf array kin de kaai in tekenrige wêze. Yndeksearre array mei ynteger toetsen begjinnend by 0.
- In tabel mei twa kolommen mimiket it gedrach fan in assosjatyf array. Fergelykber mei in tabel mei ien kolom binne yndeksearre arrays.
- Kaarten binne in assosjatyf arraytype. In yndeks array is gjin kaart.
8. Hokker foardielen hat Heap boppe sortearre arrays?
De tiidseffektiviteit fan it brûken fan Heap oer Sorted Arrays is it wichtichste foardiel. Wylst heap-operaasjes rapper binne, freget it sortearjen fan in array in protte tiid. In heap kin it lytste elemint folle flugger ûntdekke as in array kin wurde sorteare.
In opjûne kolleksje fan nûmers kin wurde regele yn ien fan twa manieren mei help fan Sorted Arrays. Oan 'e oare kant, foar in opjûne kolleksje fan nûmers, kin der mear as ien potinsjele heap.
9. Kinne wy de grutte fan 'e array definiearje om negatyf te wêzen?
Nee, wy kinne in negatyf hiel getal net definiearje as de grutte fan in array. D'r sil gjin kompilaasje-tiidflater wêze as wy ferklearje. By runtime sille wy lykwols in NegativeArraySizeException tsjinkomme.
10. Hoe fine jo de ûntbrekkende hiele getal yn in 1 oan 100-elemint array?
It totaal fan 'e rige kin berekkene wurde troch it tapassen fan de folgjende funksje: n (n + 1) / 2
Allinich as de array gjin duplikaten hat of mear as ien hiel getal ûntbrekt sil dizze funksje wurkje. Oft in array dûbele eleminten hat, kinne jo de array sortearje om te sjen oft d'r eleminten binne dy't lykweardich binne.
11. Hoe fine jo de yndeks fan in elemint yn in array?
De yndeks fan in elemint kin ûntdutsen wurde fia in lineêre of binêre sykopdracht. Oant it de oerienkomst fan it fereaske elemint lokalisearret, loopt in lineêre sykfunksje oer elk elemint yn in array. It jout de yndeks werom as it it oerienkommende elemint fynt. Dêrtroch is de tydlike kompleksiteit fan it lineêre sykjen O. (n). Sawol in sortearre as in net-sortearre array kin lineêr sykjen brûke.
Mei it brûken fan in binêre sykopdracht, dy't de array kontinu dielt yn 'e helte oant de mediaan fan it ynterval oerienkomt mei it fereaske elemint en de yndeks leveret, kinne jo de yndeks fan it elemint krije as de array is sorteare. Dêrtroch is de tydlike kompleksiteit fan it binêre sykjen O. (log n).
12. Hoe kinne jo in spesifyk elemint fan in array kwytreitsje?
Om't jo eleminten net gewoan út 'e orizjinele array kinne wiskje, om't se fêste sets binne mei in definieare grutte, siket de ynterviner jo om in oare oanpak foar te stellen en it probleem te behanneljen dat de fraach opropt. De bêste kursus fan aksje is om in nije array te meitsjen om in elemint te wiskjen. Jo kinne de eleminten duplikearje fan 'e earste array yn dizze array en allinich it elemint opnimme dat jo wiskje wolle.
In oare strategy omfettet it finen fan it doelelemint yn 'e array en dan de folchoarder omkeare fan alle items dy't rjochts binne fan it doelelemint.
13. Hoe kin twa arrays 'gelikens wurde ferifiearre?
Jo moatte earst ferifiearje de lingten fan de twa levere arrays. De oerienkommende items fan beide arrays wurde fergelike as har lingten gelyk binne. De twa arrays sille wurde beskôge as gelyk. as elk pear komponinten yn elke korrespondinsje gelyk is. Dizze oanpak wurdt net advisearre om de gelikensens fan twa arrays te kontrolearjen as de arrays grut binne, om't it in protte tiid sil nimme. Jo kinne ek de metoade equals () brûke yn 'e klasse Arrays, lykwols, as de ynterviewer jo freget om twa arrays te fergelykjen sûnder ynboude metoaden te brûken, sil dizze manier nuttich wêze.
14. As wy beprate arrays, wat bedoele jo mei de útdrukkingen "Dimensje" en "Subscript"?
De "Dimensje" fan in array is it oantal yndeksen, of subskripten, nedich om elk yndividueel lid te identifisearjen. Abonneminten en dimensjes kinne ûndúdlik wêze. In dimensje is in beskriuwing fan it berik fan tastiene kaaien, wylst in subskript in nûmer is. D'r is mar ien subskript nedich foar elke arraydiminsje.
Bygelyks, de array arr[10][5] hat twa diminsjes. Maten 10 op ien en 5 op 'e oare. Om syn komponinten oan te pakken, hawwe jo twa abonneminten nedich. Beide binne tusken 0 en 4; ien tusken 0 en 9, ynklusyf.
Kodearjen ynterviewfragen
15. Sykje in pear yn in rige dat hat de oantsjutte som
Bygelyks,
Ynfier:
- nûmers = [8, 7, 2, 5, 3, 1]
- doelwyt = 10
Utfier:
- Paar fûn (8, 2)
- Or
- Paar fûn (7, 3)
Ynfier:
- nûmers = [5, 2, 6, 8, 1, 9]
- doelwyt = 12
Utfier:
- Pair net fûn
16. Binary array sortearring mei lineêre tiid
Sortearje in binêre array yn lineêre tiid en yn in fêst gebiet. De útfier moat earst alle nullen werjaan, dan allegear.
Bygelyks,
- Ynfier: { 1, 0, 1, 0, 1, 0, 0, 1 }
- Utfier: { 0, 0, 0, 0, 1, 1, 1, 1 }
In rjochtlinige oanpak soe wêze om it totale oantal 0'en fan 'e array te berekkenjen, sis k, en dan de earste k-yndeksen yn 'e array te foljen mei 0's en de oerbleaune yndekses mei 1. As alternatyf kinne wy berekkenje hoefolle 1's totaal binne yn 'e array k, folje de lêste k-yndeksen yn 'e array mei 1, en lit de rest fan' e yndeksen fol mei 0.
De opjûne oanpak hat in O (n) tiid kompleksiteit en brûkt gjin ekstra opslach, dêr't n is de grutte fan de ynfier.
17. Fine de grutste twa-int produkt yn in rige.
Fine it grutste produkt fan twa getallen yn in hiel getal array.
Tink oan de array 10 3 5 6 2 as foarbyld. It (-10, -3) of (5, 6) pear is it heechste produkt.
Om nei te tinken oer elke elemintkombinaasje en har produkt út te finen is in dwaze oanpak. As it produkt fan it hjoeddeistige pear grutter is dan it maksimale produkt dat oant no ta is krigen, fernij dan it maksimale produkt. Print de komponinten fan it definitive produkt lêste.
De boppesteande oplossing, wêrby't n it bedrach fan 'e ynfier is, hat in tiidkompleksiteit fan O(n2) en nimt gjin romte mear yn.
18. Hoe kinne jo alle nullen fan 'e rige nei de ein ferskowe
Ferpleats alle nullen yn in hielgetal array nei it ein. It antwurd moat it brûken fan konstante romte foarkomme en de relative folchoarder fan 'e array's komponinten behâlde.
Ynfier: {1,2,3,0,8,0,4,7}
Utfier sil wêze {1,2,3,8,4,7,0,0}
Set it elemint op de folgjende beskikbere posysje yn 'e array as it aktuele elemint net nul is. Folje alle oerbleaune yndeksen mei 0 as de items fan 'e array allegear binne ferwurke.
De foargeande oplossing hat in O (n) tiid kompleksiteit, dêr't n is de grutte fan de ynfier.
19. Hoe sortearje in array mei twa yngongen dy't wurde oerskeakele yn ien operaasje.
Sortearje in array yn 'e lineêre tiid jûn twa ruile items en in array mei al syn eleminten yn opkommende folchoarder regele. Pleatst dat de array gjin duplikaten befettet.
Ynfier:= [1,9,3,4,7,2] of [9,3,7,2,1,4] of [2,4,1,7,3,9]
Utfier: = [1,2,3,4,7,9]
Begjin mei it twadde elemint yn 'e array is it doel om elk elemint te fergelykjen mei syn foargonger. De posysje fan it skeel wurdt opslein troch twa oanwizers te nimmen, x, en y.
Update x nei de yndeks fan it foarige elemint en y nei de yndeks fan it hjoeddeiske elemint as de eardere grutter is as de lêste. Update y nei de yndeks fan it aktuele elemint as bliken docht dat it foarige elemint grutter is as it aktuele elemint.
As lêste, wikselje de eleminten by yndeksen x en y as wy klear binne mei it ferwurkjen fan elk neistlizzende pear eleminten.
Fanwegen it feit dat de neamde metoade mar in inkele scan útfiert fan 'e ynfier-array fan grutte n, is de tiidkompleksiteit O(n). Gjin ekstra romte is nedich foar de oplossing.
20. Hoe kombinearje twa sortearre arrays yn plak.
Kombinearje de items fan arrays X[] en Y[] - twa sortearre arrays fan grutte m en n elk - troch de sortearre folchoarder te behâlden, dat is troch X[] te foljen mei de earste m lytste eleminten en Y[] yn te foljen mei de oerbleaune eleminten.
As in elemint yn 'e array X[] al op' e juste posysje is (dus de ien dy't it lytste is fan 'e oerbleaune eleminten), negearje it dan; ferfang it oars mei it lytste elemint, dat ek it earste lid fan Y[] is. Om de sortearre folchoarder nei it wikseljen te behâlden, ferpleatse it elemint (no by Y[0]) nei de juste lokaasje yn Y[].
De grutte fan 'e earste array is m en de grutte fan' e twadde array is n, en de tiidkompleksiteit is O(mn).
21. Hoe kinne jo in array fan items opnij oarderje yn ôfwikseljende hege en lege posysjes?
Rearrange in hiel getal array sadat elk folgjende lid is grutter as de foargeande en folgjende eleminten. Stel dat de array gjin dûbele eleminten omfettet.
It sortearjen fan de array of it brûken fan ekstra romte is net nedich foar in effektive oanpak. It plan is, om te begjinnen, it twadde lid fan 'e array en gean mei twa omheech foar elke loop-iteraasje.
Wissel de komponinten as it lêste elemint grutter is as de earste. Skeakelje op deselde wize beide items as it folgjende elemint grutter is as it hjoeddeistige elemint. Wy sille de winske array krije dy't foldocht oan 'e opjûne beheiningen oan' e konklúzje fan 'e loop.
22. Hoe kinne jo elk elemint fan in array ferfange sûnder in divyzjeoperator te brûken mei it produkt fan elk elemint yn 'e array?
Sûnder de divyzje-operator te brûken, ferfange elk elemint yn in heule getal array mei it produkt fan alle oare eleminten.
Yn lineêre tiid en konstante romte kinne wy rekursje brûke om dit probleem oan te pakken. It rekursyf berekkenjen fan de produkten fan elk elemint yn 'e rjochter subarray en it trochjaan fan it linker subarrayprodukt as funksjeparameters is it begryp.
De tiidkompleksiteit is O(n).
23. Fine it ûneven elemint yn in rige yn logaritmyske tiid
Sjoen in hieltal array dêr't allegearre útsein ien lid hawwe even oantallen foarfallen, it probleem is om te bepalen hoefolle kearen dit iene elemint ferskynt. Fyn it ûneven foarkommende elemint yn logaritmyske tiid en konstante romte as deselde eleminten yn pearen yn 'e array foarkomme en d'r kinne nea mear as twa eksimplaren fan in opjûne elemint op in rige wêze.
De XOR-operaasje stelt ús yn steat om dit probleem yn lineêre tiid op te lossen. It doel is om elk elemint yn 'e array te XOR. Allinnich de ûneven foarkommende eleminten bliuwe neidat de even foarkommende eleminten inoar ôfbrekke.
Dit probleem kin sels oplost wurde yn O(log(n)) tiid.
24. Hoe krije jo it folgjende gruttere elemint foar elk elemint yn in sirkulêre array?
It folgjende gruttere elemint foar elk elemint yn in sirkelfoarmige array moat lizze. It earste gruttere hiele getal nei in elemint x yn 'e array is it folgjende gruttere elemint fan dat elemint.
Fan rjochts nei lofts kinne wy operearje op array-items. It doel is om foar elk elemint x te loopen oant of de stapel leech is of wy hawwe in heger elemint boppe-op. Stel it folgjende gruttere elemint fan x yn om boppe op 'e stapel te ferskinen as it docht.
25. Fine in array syn inversion count?
Fine it totale oantal inversions fan in array. In pear I j) wurdt oantsjutten as in omkearing fan in array A as I j) en (A[i] > A[j]). Wy moatte elk pear fan dizze yn 'e array telle.
It tellen fan alle array-leden dy't minder binne as it nei rjochts en it tafoegjen fan it resultaat oan 'e útfier is in rjochtlinige oanpak.
Dizze oplossing hat in O(n2) kompleksiteit, wêrby't n de grutte fan 'e ynfier is.
26. Wat is it probleem mei it fallen fan reinwetter?
It finen fan it measte wetter dat kin wurde fongen yn in opjûne set fan bars mei in breedte fan ien ienheid elk stiet bekend as de "trapping reinfall" issue.
It doel is om de heechste balke te bepalen dy't lofts en rjochts fan elke balke pleatst wurde kin. It minimum fan 'e liedende balken nei lofts en rjochts, minder de hichte fan' e hjoeddeistige bar, is de hoemannichte wetter dat boppe op elke bar opslein wurdt.
Konklúzje
Yn ferliking mei oare gegevensstruktuerûnderwerpen binne arrays ienfâldiger. Om fragen oer array-ynterviews te foldwaan, moatte jo in fûneminteel begryp hawwe fan arrays.
Jo moatte de fûneminten fan arrays wiidweidich besjen, ynklusyf array-operaasjes (fan it ferklearjen / oanmeitsjen fan in array oant tagong / wizigjen fan array-items), lykas ek programmearbegripen lykas loops, rekursje en basisoperators om array-ynterviewfragen mei súkses te beantwurdzjen. Erken it probleem folslein.
Jo moatte opheldering sykje as jo fragen hawwe. Tink oan it ferdielen fan it probleem yn mear behearbere dielen. Soargje derfoar dat jo it algoritme yn gedachten hawwe foardat jo begjinne te programmearjen; skriuw it op of visualisearje it yn in streamdiagram. begjin dan koade te skriuwen.
Leave a Reply