Quindi ho trovato questa domanda di algoritmo di intervista di Google online. È davvero interessante e non ho ancora trovato una buona soluzione. Si prega di dare un'occhiata, e mi danno un suggerimento/soluzione, sarebbe bello se è possibile scrivere il codice in Java :).Un algoritmo di intervista di Google interessante che ho trovato online che richiede tempo lineare
"Progettare un algoritmo che, dato un elenco di n elementi in un array, trova tutti gli elementi che appaiono più di n/3 volte nell'elenco. L'algoritmo deve essere eseguito in tempo lineare. (N> = 0) Si sono tenuti a utilizzare il confronto e raggiungere il tempo lineare No hashing/spazio eccessivo/e non si utilizza standard di tempo lineare selezione deterministica algo"
'e non usare la selezione deterministica del tempo lineare standard algo' dire cosa ??? –
Sono curioso di sapere come si farebbe senza l'hashing. Sebbene un 'int []' conti come hashing. Definisce lo spazio eccessivo. –
Non riesco a pensare a una soluzione esatta, ma credo che ci sia un problema più noto che trova tutti gli elementi che appaiono più di n/2 volte iterando attraverso l'array e usando un trucco per trovare il più elemento popolare quindi guardando di nuovo attraverso la matrice per verificare se appare abbastanza volte.Se ripeti quel processo e ignori l'elemento più popolare, dovrebbe risolvere questo problema poiché ci sono al massimo 2 elementi che appaiono più di n/3 volte – pasha