Python feladat jó megoldás?
Bit műveleteket tanulunk és olyan metódust kell írnom aminek egy tömböt átadva visszaadja 2 szám legnagyobb XOR értékét a tömbből.
Pl ha [3, 1, 2] a tömb:
3 XOR 1 = 2
3 XOR 2 = 1
1 XOR 2 = 3 <- ez a legnagyobb XOR érték tehát 3 a megoldás.
Így csináltam és elvileg működik is:
De nem tudom ez jó megoldás-e mert például minden számot XOR-ol saját magával is ami mindig 0 lesz tehát azt feleslegesnek tűnik ellenőrizni.
Hogyan kéne ezt jobban megcsinálni?
"minden számot XOR-ol saját magával is ami mindig 0 lesz tehát azt feleslegesnek tűnik ellenőrizni"
Ha mondjuk 1 és 2 van a tömbben, akkor te megnézed az 1-1, 1-2, 2-1 és 2-2 párokat, holott elég lenne csak az 1-2-t.
A belső loop-ot ne 0-ról indítsd, ott elég csak az i utáni elemeket vizsgálnod.
Illetve zárójelben érdemes megjegyezni, hogy a time complexity négyzetes a megoldásodnál (az elemszám növelésével ilyen arányban fog nőni a futásidő) és van lineáris megoldás, bár az nem triviális.
Igaz, köszi működik.
A lineáris megoldás sokkal gyorsabb az enyémnél?
A tömb méretétől függ.
Kis elemszámnál gyorsabb lesz a négyzetes, nagy elemszámnál (mondjuk pár száz fölött) pedig egyre lassabb a lineárishoz képest. Ezres nagyságrendnél már valószínűleg a sokszorosa.
#4 Mutatsz lineáris megoldást? Vagy legalább elmondod azt hogy kéne?
#6 Ezt nem értem.
Ja igen jogos az eredeti kódomba felesleges a range.
De viszont a javítottba (amit #2 javasolt) már kell szerintem különben nem tudom megadni, hogy a belső ciklus az i után induljon.
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!