Questa è una domanda interessante che ho trovato sul web. Dato un array contenente n numeri (senza informazioni su di essi), dovremmo preelaborare l'array in tempo lineare in modo da poter restituire i k elementi più piccoli nel tempo O (k), quando ci viene dato un numero 1 <= k <= n
Ho discusso questo problema con alcuni amici ma nessuno è riuscito a trovare una soluzione; Qualsiasi aiuto sarebbe apprezzato!
note rapide: -l'ordine dei k elementi più piccoli non è importante -gli elementi nell'array sono numeri, potrebbero essere numeri interi e potrebbero non essere (quindi nessun ordinamento radix) -il numero k non è noto nella fase di pre-elaborazione. la preelaborazione è O (n) tempo. la funzione (trova k elementi più piccoli) nel tempo O (k).