Trouver un numéro où il apparaît exactement N/2 fois

Ici est l'une de mes questions de l'entrevue. Étant donné un tableau de N éléments et où un élément semble exactement N/2 fois et le reste N/2 éléments sont unique. Comment voulez-vous trouver l'élément avec un meilleur moment de l'exécution?

Rappeler les éléments ne sont pas triés et vous pouvez supposer que N est pair. Par exemple,

input array [] = { 10, 2, 3, 10, 1, 4, 10, 5, 10, 10 }

Voici donc 10 apparaît extactly 5 fois ce qui est N/2.

Je sais une solution à O(n) temps d'exécution. Mais toujours impatient de connaître une meilleure solution en O(log n).

  • On m'a dit dans l'interview, il y a une solution avec O(log n) 🙂 ..
  • Mais il semble que dans le pire des cas, cela ne pouvait pas être mieux que O(n)
  • Pouvez-vous expliquer ce que vous entendez par "un meilleur moment de l'exécution?"?
  • 😀 T N de mesurer le nombre d'éléments ou le nombre de bits pour représenter les éléments. Si c'est le dernier, je pense que nous avons notre réponse!
  • mieux faire mieux que O(n)
  • son absence d'éléments de bien 😉
  • Êtes-vous sûr que nous ne savons rien d'autre sur ces éléments? Nous ne savons même s'ils sont des nombres ou pourraient-ils être arbitraire des éléments?
  • ils sont des nombres, mais peut être +ve/-ve
  • Vous ne savez pas si cela va sembler stupide, mais qu'allons-nous mesurer avec N? accès à des tableaux? les comparaisons entre les deux éléments? puis-je faire des maths sur deux éléments pour le "libre"?
  • En gros, nous mesurons combien de fois vous regardez un élément de tableau. Si la taille du tableau de double, votre algorithme de prendre deux fois plus longtemps? Quatre fois plus long? Ou sera le temps seulement d'augmenter un peu? Ou votre algorithme de prendre la même quantité de temps, peu importe comment grand l'entrée est?
  • Je sais comment big(0) fonctionne normalement, mais j'ai peur il y a quelques "truc" ou "penser en dehors de la boîte" la réponse à cette question, et je vais essayer de les éradiquer.
  • Je ne vois pas comment vous pouvez obtenir O(log n) de ce que si il ya certains de la commande aux éléments.

InformationsquelleAutor Ganesh M | 2009-07-28