Kezdőoldal » Számítástechnika » Programozás » Hogyan lehet megoldani, hogy...

Hogyan lehet megoldani, hogy egy input tömbbe keressük, hogy van-e két ugyanolyan értékű elem?

Figyelt kérdés
Feltételezem két egymásba ágyazott for ciklust kell csinálni, de ezen belül nem teljesen értem, hogy miként lehetne megoldani.

2022. márc. 12. 10:18
1 2
 1/20 anonim ***** válasza:
37%
Ilyen mindenféle kódokat kell hozzá irogatni.
2022. márc. 12. 10:51
Hasznos számodra ez a válasz?
 2/20 anonim ***** válasza:
78%

A talán legkevésbé hatékonyabb, viszont valószínűleg a legkönnyebben érthetőbb módszer az, ha egy iterációval bejárod a tömb elemeit, s egy ebbe ágyazott másik iterációval, minden lépésben bejárod a a teljes tömböt, s egy szelekcióval vizsgálod, megegyezik - e a külső iteráció által indexelt elem értéke annak az elemnek az értékével, amit a belső iteráció aktuálisan indexel épp.


De lehet azért ezt hatékonyabban is, viszont a kérdésed nem ezt firtatta. Ha ennyi már elég, akkor használd ezt egészséggel! :)

2022. márc. 12. 11:09
Hasznos számodra ez a válasz?
 3/20 anonim ***** válasza:
63%
Vagy csinálhatod azt, hogy sorbarendezed a tömböt, így az ugyanolyan értékű elemek egymás után kerülnek, csak azt kell megnézned, hogy egymást követő egyforma elemek. Ez gyorsabb.
2022. márc. 12. 19:04
Hasznos számodra ez a válasz?
 4/20 anonim ***** válasza:

#3


2 - es vagyok. Nyilván érdemes sorbarendezni, mégsem írtam, mert most - legalábbis a feltett kérdésből megítélve a kérdező pillanatnyi tudásszintjét - feltehetően az lesz a következő kérdése, hogy miként kell sorbarendezni.


Lehet persze erre azt is mondani, hogy az alkalmazott programnyelvnek bizonyára megvannak erre a beépített függvényei / metódusai, de szerintem az illető abban a tanulási fázisban van, amikor - már csak gyakorlásképpen is - neki magának kell megírni ezeket a kódokat. (Mármint kitalálni az alkalmazandó algoritmust, majd implementálni azt.)

2022. márc. 12. 21:30
Hasznos számodra ez a válasz?
 5/20 anonim ***** válasza:
0%

"Nyilván érdemes sorbarendezni,"


Nem feltétlenül.

Ez most egy iskolai feladat, úgy oldja meg, ahogy tudja. Bár gondolom a megoldását értékelik is majd, de valós kornyezetben nem biztos, hogy jut erőforrás a plusz memória és cpu igényre.

A tomb elemszáma is befolyásolja a dolgot. Generikus algoritmust várnak el valószinűleg, ami optimális néhány tíz és milliós elemszám esetén is.

2022. márc. 13. 00:55
Hasznos számodra ez a válasz?
 6/20 anonim ***** válasza:
45%
#4 nem érdemes.
2022. márc. 13. 09:31
Hasznos számodra ez a válasz?
 7/20 anonim ***** válasza:
0%
Nem ismerem a C++ nyelvet igazán, de gondolom stl-ben van olyan, hogy hashset. Abba elkezdem bepakolni az elemeket, de minden lépésben megnézem, van-e már benne, ha van, megállok, mert van olyan elem, ami kétszer szerepel az előző tömbben. A 2 ciklusos megoldás O(n^2) futásidejű lenne, a quicksort O(n*logn), ez hash ütközés nélkül O(n), legrosszabb esetben O(n*logn), szóval a 3 felsorolt megoldásból ez a legjobb.
2022. márc. 13. 09:54
Hasznos számodra ez a válasz?
 8/20 anonim ***** válasza:

#7 hogy jött ki neked nlogn legrosszabb esetre a hashset megoldásnál?

Ha intekről van szó akkor sem annyi és ha tetszőleges inputról, akkor sem.

2022. márc. 13. 10:01
Hasznos számodra ez a válasz?
 9/20 anonim ***** válasza:

Lehet belekevert valami rendezést is és úgy jött ki neki az O(n*logn).

Még annyit érdemes lehet megemlíteni, hogy a space complexity a set-es megoldás esetében O(n), a másik kettőnél konstans (feltéve, hogy in-place algoritmussal rendezünk).

2022. márc. 13. 13:35
Hasznos számodra ez a válasz?
 10/20 anonim ***** válasza:
0%
2022. márc. 13. 15:03
Hasznos számodra ez a válasz?
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!