Kezdőoldal » Számítástechnika » Programozás » Ezt a Java feladatot milyen...

Ezt a Java feladatot milyen adatstruktúrával kéne megvalósítanom?

Figyelt kérdés

Olyan queuet kell csinálnom amibe inteket lehet rakni és mindig a legtöbbször előforduló intet adja vissza de egyébként queueként viselkedik.

Pl belerakom az 1, 2, 3 számokat ilyen sorrendben, akkor először az 1-et fogja visszaadni aztán a 2-t aztán a 3-at. De ha belerakom az 1, 2, 2, 3 számokat akkor először egy 2-t fog visszaadni aztán 1, 2, 3-at.

Ha több int is ugyanannyiszor fordul elő benne akkor szintén queuenak megfelelően a legkorábban bekerültet adja vissza először.

Pl ha 1, 2, 3, 3, 4, 4, 5 a tartalma akkor 3, 4, 1, 2, 3, 4, 5 sorrendben adja vissza az inteket.


Sima queueval ezt nem tudom megcsinálni de nem tudom mit lenne érdemes használnom helyette.



2020. máj. 4. 16:29
1 2
 1/13 A kérdező kommentje:
Persze úgy kell hogy rendes objektumként lehessen kezelni tehát lehessen példányosítani és legyen enqueue és dequeue metódusa az intek belerakásához és kivételéhez.
2020. máj. 4. 16:46
 2/13 A kérdező kommentje:

Illetve persze nem rendezett sorrendben fogja kapni az inputot csak a példákban írtam így.

De kaphat pl 5, 4, 2, 2, 6 számokat és ezeket ilyen sorrendben fogja visszaadni: 2, 5, 4, 2, 6 (először a kettest mert abból van a legtöbb aztán a többi elemet a bekerülés sorrendjében)

2020. máj. 4. 17:08
 3/13 anonim ***** válasza:
63%

Nem hiszem, hogy van ilyen osztály beépítve, bár tévedhetek is.

Én a helyedben azt csinálnám, hogy leszármaztatok egy Queue-jellegű osztályból, ami implementálja a Deque és Queue interfészt, aztán override-olod a szükséges függvényeket.

2020. máj. 4. 17:19
Hasznos számodra ez a válasz?
 4/13 A kérdező kommentje:

Amit nem tudok az inkább az implementáció része.

Pl ha egy elemből több van mint a többiből akkor előfordulhat hogy a queue közepéről kell visszaadnom elemeket. Ezt hogy implementálom? Nem tudom azt sem hogy milyen formában tartsam nyilván az előfordulásokat pl.

Vagy ha bekerül egy új elem ami már a queueban van akkor honnan tudom hogy a régebbit kell majd először kivenni és honnan.

Az egésznek a logikáját nem tudom kitalálni.

2020. máj. 4. 17:32
 5/13 A kérdező kommentje:

Arra gondoltam hogy TreeSetet használok az elemek tárolására egy saját Comparatorral de nem tudom a Comparator hogy rendezzen hogy belekalkulálja az előfordulást és a sorrendet is.

Ettől nem jutok tovább:

[link]

2020. máj. 4. 17:58
 6/13 anonim ***** válasza:
63%
Pl dictionaryben eltárolod az értéket meg egy countert. Ha új input jön és már létezik az az érték akkor növeled a megfelelő countert, ha nem, simán belerakod új elemként. A queue viselkedést meg el lehet érni sima metódusokkal amit megírsz és elnevezed ahogy a feladat kéri.
2020. máj. 4. 18:14
Hasznos számodra ez a válasz?
 7/13 A kérdező kommentje:

Kiegészítettem a kódomat egy Mappel a dictionary javaslat hatására és raktam bele egy main függvényt is tesztelni de nem jó így sem.

1 2 2 3-at belerakva 2 1 null null-t ad:

[link]

2020. máj. 4. 18:37
 8/13 anonim ***** válasza:
100%

TreeSet-et akarsz Queue-ként használni, de Set-ben ugye nem fordulhat elő adott elem egynél többször.

Illetve így az enqueue O(log n) komplexitást eredményez, holott optimális esetben az enqueue és a dequeue is O(1)-es művelet.

A Map egyébként jó irány, a TreeSet nem.

2020. máj. 5. 11:11
Hasznos számodra ez a válasz?
 9/13 anonim ***** válasza:
100%

Bár nem java és nem biztos, hogy legoptimálisabb:

[link]

2020. máj. 5. 15:37
Hasznos számodra ez a válasz?
 10/13 A kérdező kommentje:

Köszönöm én a megoldásig sem jutottam el, ez alapján menni fog.

Majd megpróbálom optimalizálni is.

2020. máj. 5. 16:06
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!