Van jobb megoldás erre a feladatra?
A feladat a következő:
- a bemeneti érték egy tömb
- a kimeneti érték szintén egy tömb, ahol adott index értéke annyi, amennyi darab kisebb szám található a bemeneti tömbben az azonos indexen álló számnál
Példa:
- bemenet: [8, 3, 1, 5]
- kimenet: [3, 1, 0, 2]
Tehát 8-3, mert 8-nál 3db kisebb szám van a bemeneti tömbben (1, 3 és 5)
3-1, mert 3-nál 1db kisebb szám van a bemeneti tömbben (az 1)
1-0, mert az 1 a legkisebb szám a bemeneti tömbben
5-2, mert 5-nél 2db kisebb szám van a bemeneti tömbben (1 és 3)
A megoldásom a következő:
- létrehozom a kimeneti tömböt (a mérete megegyezik a bemeneti tömb méretével)
- for ciklussal végig iterálok a bemeneti tömbön
- a fenti for ciklusban újabb for ciklust indítok, ami szintén végig iterál a tömbön
- ha a belső for ciklus aktuális eleme kisebb, mint a külsőé, akkor a kimeneti tömb megfelelő indexén lévő értéket inkrementálom
- visszaadom a kimeneti tömböt
Ez elég triviális megoldásnak tűnik és nem vagyok biztos benne, hogy nem-e létezik ennél jobb megoldás.
Nem szükséges kódot írni, csak ötletekre lennék kíváncsi inkább.
"Ezután a bemenet i indexéhez csak ki kell vennem a számláló tömb i - 1 indexét"
Ezt is rosszul fogalmaztam, a bemenet i indexén található számhoz a számláló tömb megfelelő megelőző indexét.
Tehát ha input[i] értéke 3, akkor count[2]-t veszek ki.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!