/ / K'th Min Z množiny intervalov - algoritmus, pamäť, dátové štruktúry, časová náročnosť, min

K'th Min Z množiny intervalov - algoritmus, pamäť, dátové štruktúry, časová zložitosť, min

Zadali ste množinu intervalov ako {2,7}, {3,8}, {9,11}, {-4, -1} atď. Otázkou je nájsť k "tretinu z týchto množín intervalov.

Tiež duplikáty sa počítajú dvakrát. Napríklad, ak sú intervaly {1,4} a {2,6} a k = 3, potom je odpoveď 2, pretože ak intervaly vyrovnáme a zoradíme ich, spojíme ich, dostaneme postupnosť

 1,2,2,3,3,4,4,5,6

Kde 3. min je 3.

Tento problém môže byť vyriešený mnohými spôsobmi. Snažím sa však nájsť ten, ktorý má minimálnu zložitosť času a priestoru.

odpovede:

3 pre odpoveď č. 1
  1. Vyrovnajte intervaly.
  2. Zoraďte sploštenú postupnosť.
  3. Iterujte cez zoradenú sekvenciu, kým nenájdete k-th element, pričom ignoruje duplicitné hodnoty.

Teraz urobme nejakú analýzu, kde sme sa rozhodli N celkový počet prítomných vo vašich intervaloch a M priemerný počet duplicitných hodnôt, ktoré bude mať číslo (bude 1 pre jedinečnú sploštenú sekvenciu).

Vesmírna zložitosť:

O (N)

kde by ste mohli urobiť lepšie, ak máte veľa duplicitných prvkov, iteráciou cez sploštenú sekvenciu, zatiaľ čo duplikované prvky sa zahodia.

Časová zložitosť:

O (k * M + NlogN)

  • Sploštenie zaberá O (N)
  • Zoradenie trvá O (NlogN)
  • Iterácia trvá O (k * M)