Le plus commun élément dans un tableau / Trouver de la majorité relative, de façon déterministe en temps O(n) en temps et O(1) de l'espace?

Ainsi, par exemple, la réponse au tableau:

1, 11, 3, 95, 23, 8, 1

serait de 1, puisque tous les autres éléments qu'une seule fois alors que 1 se produit deux fois.

Beaucoup de questions similaires à cette question que j'ai vu sur stackoverflow demander de trouver la majorité absolue (la réponse se produit au moins n/2 dans un tableau de longueur n), ou de répondre à la question à l'aide de tri ou d'une table de hachage. L'ancien n'est pas ce que je demande, et le dernier est trop faible ( O(n log n) pour le tri ) ou s'il utilise trop de mémoire ( O(n) pour une table de hachage ).

Fait un tel algorithme n'existe pas? Si non, est-il un élément de preuve indiquant pourquoi c'est impossible? Y compris une source, ce serait bien.

Comment sur une analyse linéaire? Il semble que vous avez appliqué pas pensé à cela.
Est-ce devoirs?
Pouvez-vous expliquer ce que vous entendez par une analyse linéaire et non, ce n'est pas de devoirs
double possible de Comment pouvons-nous trouver un certain nombre dans la gamme en O(n) en temps et O(1) de la complexité de l'espace
Si votre tableau contient des entiers, alors vous pouvez le faire en O(n) en temps et O(1) de l'espace. Trier le tableau à l'aide d'une binaire de tri radix. Ensuite, faire une passe à travers le tableau pour déterminer le plus commun élément. Radix de tri nécessite 32 traverse tableau 33 passe au total, ce qui est une constante, de sorte que O(n).

OriginalL'auteur weeb | 2012-08-02