Elakadtam egy HackerRanks feladatban, hol lehet a hibám? (bármely C szerű nyelvben)
HackerRanks, Picking numbers feladat. Nem konkrét interjúra vagy ilyesmire kell és nem iskolai feladat, az oldal email-ben küldte.
Given an array of integers, find and print the maximum number of integers you can select from the array such that the absolute difference between any two of the chosen integers is less than or equal to 1.
....
Sample Input 0
6 a hossza
4 6 5 3 3 1 a számok, nem feltétlenül rendezett, mint a mellékelt ábra is mutatja
Sample Output 0
3
https://pastebin (pont) com/ZAHk1W0F
Hol a hibám?
Ez C#, de nem muszáj ahhoz ragaszkodni, bármely C nyelvben megérteném a lényeget. :)
Jó, de ötletet kérnék szépen.
Azt én is tudom, hogy rossz, mert jelenleg 1 teszteseten se megy át.
Plusz sehol se tanultam azt a mérőszámot, de azt látom, hogy túl bonyolult a kódom. Tehát tuti szebben lehetne.
Van megszorítás a tömbben lévő számok értékére?
1-10 intervallumba eső számok fordulnak csak elő, vagy ilyesmi?
Darabszám [2..100]
Érték ]0..100[
"Jó, de ötletet kérnék szépen."
Egyetem. Mondjuk a BME vagy az Óbudai.
Kiválasztás tétele.
1-esnél a pont.
Na arra nem feltétlen fogadtam volna, hogy ennél a kérdésnél is bunkók lesznek az emberek. Anyám, de komolyan...
Ez a kategória amúgy tipikusan olyan, hogy semmilyen kérdést nem lehet feltenni sehogyan se...
Az okoskodás megy szokás szerint, csak valahogy a megoldás nem.
O(n)-ben egyébként nem oldható meg a feladat, nem véletlenül nem jött hozzá megoldás, csak az arcoskodás.
Én párba állítgatnám a számokat.
4 -> új pár, párba állhat majd 3-mal vagy 5-tel
6 -> új pár, párba állhat majd 5-tel vagy 7-tel
5 -> 4-es és 6-os párhoz is hozzácsapodik
3 -> 4-eshez hozzácsapódik és új párt alkothat a 2-essel
3 -> 3-es és 4-es párhoz is hozzácsapódik
1 -> új pár, párba állhat 0-val vagy 2-vel
Végére értünk, megnézzük melyik pár a leghosszabb -> 4, 3, 3 nyert, tehát a max hossz 3.
Először csak próbálom értelmezni a kódot: Szóval először rendezed, utána olyan szakaszt keresel benne, ahol a kritérium teljesül.
Amit nem értek, hogy az egyik else ágban lévő "firstNumberOfSeq = -1" mit csinál. Olyan, mintha eldobná a már megtalált sorozatot, ha vége van.
1 3 3 4 5 6
Itt pl. az 5-ösnél eldobja a 334 sorozatot? (Lehet, hogy én értem félre.)
Lehet, hogy az volt a hibám. Rögzíteni próbáltam a megtalált szakasz hosszát, de magát a szakaszt eldobni és a többire koncentrálni.
Átgondoltam máshogy, 2 ciklussal és számolom, hány a[i] - nál eggyel nagyobb, kisebb vagy egyenlő szám van, így már csak 1 db teszteset rossz.
https://pastebin (pont) com/pww3L4vT
1 pass, O(n) time, O(n) space, Java megoldás, csak a csicska hetes válaszolónak :)
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!