Aktywne Wpisy

Wrrronika +14
Czy jestem odpowiednio nocna, jeśli codziennie mam taki naturalny 'makijaż' pod oczami?
źródło: 1000012948
Pobierz
Umeraczyk +11
Szlacheckie zakupy
źródło: temp_file3450606021223497028
PobierzSkopiuj link
Skopiuj link
źródło: 1000012948
Pobierz
źródło: temp_file3450606021223497028
PobierzWykop.pl
array = [
[60, 95],
[15, 40],
[55, 62],
[92, 100],
[17, 30],
[2, 20]
]
Zawartość tej tablicy można zobrazować tak, jak na załączonym obrazku.
Zadaniem jest znalezieniem takie przedziału (bądź punktu) w którym ilość zadeklarowanych w tablicy przedziałów jest największa.
Dla podanego przykładu będzie to przedział [17, 20], ilość 3.
Chodzi mi o znalezienie jak najoptymalniejszego rozwiązania.
Narazie przychodzi mi do głowy jedynie najprostsze rozwiązanie: krokowe sprawdzanie w całym zakresie ilości przedziałów i porównywanie z maxem. Ale takie rozwiązanie jest mało wydajne (delikatnie mówiąc).
Nie potrzebuję implementacji w jakimś konkretnym języku, tylko sposób postępowania. Ktoś ma jakiś pomysł w ten niedzielny poranek?:)
#algorytmy #programowanie #zagadkiprogramistyczne
źródło: comment_TLJ2EPn6nbj8BGR0GiT02VvZUZJbZQ27.jpg
PobierzKomentarz usunięty przez autora
Całość zależy też od stosunku wielkości całego przedziąłu liczb do ilości przedziałów, liniowość można przyjąć jak to nie będzie jakaś ekstremalnei duża liczba przedziałów
I ogólnie przeszukaj google - nested intervals - bo to zbliżony problem.
Myslę, że nested interval a ten prolem mogą być jednak troche daleko od siebie, szczególnie jak się znajdzie jakieś supersprytne rozwiązanie to może być ciężko je rowinąć do "zachodzenia" na siebie zamiast zawierania.
@mk4s: Nie ma czegoś takiego jak "jak najoptymalniejsze" rozwiązanie. Jak coś jest optymalne, to nie da się tego poprawić.
Niektórzy są na to uczuleni, więc warto zapamiętać :)
http://ideone.com/NY72fi
W skrócie jedziesz od lewej do prawej i obsługujesz zdarzenia, którymi są: natrafienie na początek przedziału, natrafienie na koniec przedziału.
Najpierw trzeba więc posortować początki i końce tych przedziałów(@Rev wrzucił do mapy). To znaczy, że cały algorytm będzie działał w O(nlogn).