To interesujące pytanie znalazłem w Internecie. Biorąc pod uwagę tablicę zawierającą n liczb (bez informacji o nich), powinniśmy wstępnie przetworzyć tablicę w czasie liniowym, abyśmy mogli zwrócić k najmniejszych elementów w czasie O (k), gdy otrzymamy liczbę 1 <= k <= n
Dyskutowałem o tym problemie z przyjaciółmi, ale nikt nie mógł znaleźć rozwiązania; każda pomoc będzie mile widziana!
krótkie uwagi: - kolejność k najmniejszych elementów nie jest ważna - elementy w tablicy są liczbą, mogą być liczbami całkowitymi i mogą nie być (więc brak sortowania w radix) - liczba k nie jest znana na etapie wstępnego przetwarzania. przetwarzanie wstępne to czas O (n). funkcja (znajdź k najmniejszych elementów) w czasie O (k).