Kezdőoldal » Számítástechnika » Programozás » Ezt a feladatot hogy kéne...

Ezt a feladatot hogy kéne megoldani?

Figyelt kérdés

Az a feladat, hogy bemenetül kapok egy pozitív számokból álló integer tömböt és vissza kell adnom egy integer tömböt, ahol az i-edik elem értéke az, hogy a bemeneti tömbben az i-edik indexen lévő elemnél hány kisebb elem van a tömbben.

Például ha {2, 5, 1} a bemeneti tömb, akkor {1, 2, 0} a kimenet mert a 2-nél 1db kisebb elem van, 5-nél 2db kisebb elem van, 1-nél pedig 0db kisebb elem van a tömbben.


Az jó megoldás ha 2 egymásba ágyazott for ciklussal megvizsgálok minden párt és ha a külső értéknél kisebb a belső, akkor növelem a kimeneti tömb megfelelő indexét?


(a nyelv mindegy, az megoldás elve a lényeg nekem)



2020. jún. 26. 12:30
 1/10 anonim ***** válasza:
52%
Szerintem jó. Most így hirtelen nekem sem jut eszembe kevesebb lépést igénylő megoldás.
2020. jún. 26. 12:40
Hasznos számodra ez a válasz?
 2/10 anonim ***** válasza:
52%

Attól függően, hogy milyen szintű feladat, teljesen jó.

Esetleg csinálhatsz egy segédtömböt, amibe a bemeneti tömb elemeit rakod sorrendbe rakva, majd azon az adott elemre bináris keresést végrehajtva, a megtalált elem indexéből következtethetsz az adott számnál kisebb elemek számosságára.


Via: [link]

2020. jún. 26. 13:09
Hasznos számodra ez a válasz?
 3/10 anonim ***** válasza:

Te írtad ki a prefix sum kérdést?

Ha nem, akkor annak nézz utána, mert ez klasszikus prefix sum probléma.

Ha kicsi a tömb elemszáma, akkor egyébként jó lehet a négyzetes megoldásod is.

2020. jún. 26. 14:50
Hasznos számodra ez a válasz?
 4/10 anonim ***** válasza:
3: Pont azt nézem én is, hogy csak eljutott önerőből odáig, hogy kiderítse, mi is az a prefix sum. :))
2020. jún. 26. 14:54
Hasznos számodra ez a válasz?
 5/10 A kérdező kommentje:
Nem én írtam ki azt, de utána nézek akkor.
2020. jún. 26. 15:36
 6/10 anonim ***** válasza:

Én hirtelen ezt tudtam rá összehozni: [link]


Nem igényli a rendezést (annak is van költsége) és a négyzetnek csak a felét járja be.

2020. jún. 26. 22:25
Hasznos számodra ez a válasz?
 7/10 anonim ***** válasza:

Vannak megkötések az elemszámra, vagy a maximális előforduló értékre, vagy bármi másra?

Ilyen információ hiányában nem igazán lehet optimális megoldást mondani.

Egy prefix sum megoldásnál pl. O(n + k) a time és a space is. Ha pl. k nagy, akkor kellően kis elemszám esetén jóval lassabb lehet akár egy négyzetes megoldásnál is.

2020. jún. 26. 23:35
Hasznos számodra ez a válasz?
 8/10 A kérdező kommentje:

"a számok [1,100] intervallumban fordulhatnak elő, a tömb mérete pedig 10^6 lehet maximum"

Ezek vannak.

Köszönöm az eddigi válaszokat.

2020. jún. 27. 08:50
 9/10 anonim ***** válasza:

Hát akkor egyértelműen prefix sum.

Ha 32 bites intekkel számolunk, akkor legrosszabb esetben 4MB körüli extra memória kell neki és mondjuk nagyságrendileg 30 ms futásidő (ez nyilván sokmindentől függ).

Egy négyzetes megoldás órákig futna.

2020. jún. 27. 10:13
Hasznos számodra ez a válasz?
 10/10 A kérdező kommentje:
Asszem sikerült prefix summal, köszönöm!
2020. jún. 28. 09:20

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!