Ismertesse, hogyan használhat egy egydimenziós tömböt három köteg megvalósításához

Mint sok feladat, mindez attól függ, hogyan fogjuk támogatni ezeket a kötegeket. Ha meg kell adnunk egy bizonyos helyet minden egyes veremhez, ezt megtehetjük. De ebben az esetben az egyik halom kipufoghatja a forrásokat, míg mások majdnem üresek.







Természetesen egy rugalmasabb térmegosztási rendszert használhat, de ez nagymértékben bonyolítja a feladatot.

Megközelítés 1. Rögzített elválasztás

A tömböt három egyenlő részre oszthatja, és lehetővé teszi, hogy a halmozódás egy zárt térben fejlődjön. Vegye figyelembe, hogy a sávok határait a zárójelek segítségével írjuk le: a szögletes zárójelek [] azt jelenti, hogy a határértékek a tartományon belül vannak, és a zárójelek nem szerepelnek.

• Stack 1: [0, n / 3].
• Stack 2: [n / 3, 2n / 3].






• Stack 3: [2n / 3, n].

A megoldás kódja az alábbiakban látható:

Ha további információkkal szolgálunk a kötegek céljáról, módosíthatjuk az algoritmust. Például ha feltételezzük, hogy több elem van az 1. veremben, mint a 2. veremben, akkor az 1-es verem javára teret oszthatsz ki.

Megközelítés 2. Rugalmas elválasztás

A második megközelítés rugalmas térfelosztás a verem blokkok számára. Ha az egyik stack nem illeszkedik a forrásterembe, növeljük a szükséges erőforrás mennyiségét, és szükség esetén mozgatjuk az elemeket.

Ezenkívül létrehozhat egy tömböt oly módon, hogy az utolsó stack a tömb végén kezdődik és az elején végződik - a tömb "körbefutása".

Azonban az interjúban nem lesz kénytelen írni ilyen összetett kódot, ezért egyszerűsített változatra (pszeudokódra) korlátozzuk magunkat.

Ezekben a feladatokban fontos, hogy a tiszta és könnyen követhető kódok írására összpontosítsunk. További osztályokat kell használnia, mint a StackData-val, és elkülönítenie kell a kódblokkot külön módszerekkel. Ez a tanács nemcsak az interjúra hasznos, hanem valódi feladatokban is használható.




Kapcsolódó cikkek