Nombre manquant(s) Question d'Entrevue Redux

La commune interview problème de la détermination de la valeur manquante dans une gamme allant de 1 à N a été fait mille fois. Les Variations incluent des 2 valeurs manquantes jusqu'à K valeurs manquantes.

Exemple de problème: Gamme [1,10] (1 2 4 5 7 8 9 10) = {3,6}

Voici un exemple des différentes solutions:

Simple question d'entrevue obtenu plus difficile: étant donné les numéros 1..100, trouver le nombre manquant(s)

Ma question est que vu que le cas simple d'une valeur manquante est de O(n) la complexité et de la complexité de la plus grande des cas convergent à peu près quelque chose de plus grand que O(nlogn):

Ne pourrait-elle pas être plus facile de répondre à la question en disant sorte (mergesort) la plage et itérer sur elle en observant les éléments manquants?

Cette solution ne devrait pas prendre plus de O(nlogn) et est capable de résoudre le problème pour les autres plages de 1 à N tel que de 10 à 1000 -100 à +100 etc...

Est-il une raison de croire que les solutions ci-dessus DONC, le lien sera mieux que le tri en fonction de la solution pour un plus grand nombre de valeurs manquantes?

Remarque: Il semble que beaucoup de la commune de solutions à ce problème, supposons qu'un seul numéro de l'approche de la théorie. Si l'on est invité à une telle question dans un S/E entrevue ne serait-il pas prudent d'utiliser une plus informatique/algorithmique approche, en supposant que l'approche est sur le pair avec le nombre de théorie de la complexité de la solution,...

Plus de liens relatifs:

  • De tri ou à l'aide de BitSets sont parfaitement solutions valables, à moins que l'enquêteur précise qu'il est à la recherche d'un streaming algorithme ou que le jeu nécessite trop de mémoire.
  • Que faire si vous n'avez même pas O(N) de la mémoire disponible? Que faire si vous avez à mettre en œuvre ce sur un dispositif intégré avec des ressources très limitées, et l'entrée se présente sous la forme d'un flux sans accès aléatoire?
  • Le problème avec cette réponse, c'est l'OP posté dans questions qui requièrent spécifiquement O(K) de l'espace; que cette réponse nécessite O(N) l'espace. L'OP caractérisé autres réponses (dont certains sont très bons) comme "ridicule réponses".
  • Les problèmes faire le plus de sens, lorsque l'entrée est donnée dans un flux de sens: Vous ne pouvez pas stocker tous les n éléments en mémoire, mais ils sont affichées une à la fois. Vous n'avez k^O(1) de mémoire pour jouer avec. Dans ce cas, la somme des puissances technique n'a de sens. Vous pouvez également améliorer le "temps utilisé par le numéro indiqué", par hachage comme dans stackoverflow.com/a/36851791/205521
InformationsquelleAutor | 2010-12-10