Leghosszabb ismétlődés megtalálása tömbben?
Van egy csak 0-kból és 1-esekből álló tömböm, pl ez:
int tomb[]={1,0,1,0,0,0,1,0,0}
Nekem azt kellene megtalálnom, hogy a leghosszabb 0-kból álló sorozat (ami itt 3 hosszú), melyik indexnél kezdődik (itt a 3as indexnél) és melyik indexnél végződik (itt az 5ös indexnél)
Jó régóta próbálkozom ciklusokkal/elágazásokkal de nem akar összejönni.
Köszi a segítséget!
4 változó kell hozzá:
- eddigi legtöbb száma
- jelenlegi szám
- az eddigi legtöbb kezdő index
- az eddigi legtöbb utolsó index
Megy a ciklusod, ha az aktuális érték 0, akkor a jelenelgi számhoz hozzáadsz egyet, ha 1, akkor összehasonlítod az eddigi legtöbbel, ha nagyobb, akkor eltárolod legtöbbnek
1. Első nullánál egy számlálót inkrementálsz amíg a nullát nulla követi. (a másik két lépésre már rá fogsz jönni te is)
2.
3.
A #2-es válaszát pontosítanám. Nem akkor tárolod el leghosszabbnak, ha 1. hanem vagy minden lépésben vagy külön a végén is megnézed. Hisz ha a leghosszabb 0-s sorozat a tömb végén van, akkor az ő megoldása nem találná meg.
Itt a kód:
Illetve ha egy sorban és nem hatékonyan akarod, akkor:
Enumerable.Range(0, tomb.Length).OrderByDescending(x=>tomb.Skip(x).TakeWhile(y=>y==0).Count()).FirstOrDefault()
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!