Comment trouver un double élément dans un tableau de déplacés nombres entiers consécutifs?

Je suis récemment tombé sur une question quelque part:

Supposons que vous disposez d'un tableau de 1001 entiers. Les entiers sont dans un ordre aléatoire, mais vous savez tous les entiers entre 1 et 1000 (inclus). En outre, chaque numéro s'affiche qu'une seule fois dans le tableau, sauf pour un certain nombre, qui se produit deux fois. Supposons que vous pouvez accéder à chaque élément du tableau qu'une seule fois. Décrire un algorithme pour trouver le certain nombre. Si vous avez utilisé auxiliaire de stockage dans votre algorithme, pouvez-vous trouver un algorithme qui n'en a pas besoin?

Ce que je veux savoir, c'est la deuxième partie, c'est à dire, sans l'aide d'auxiliaires de stockage. Avez-vous une idée?

  • assez sûr que cela a été demandé avant, mais impossible de trouver l'exacte qn. le total de la n des entiers dans l'ordre et la répétition de l'entier x est x + n(n-1)/2.
  • Pouvez vous s'il vous plaît question de modification du titre pour quelque chose de plus descriptif? Peut-être que "Trouver dupliquer l'élément de tableau avec des contraintes particulières"
  • une autre propriété mathématique que vous pouvez utiliser ici est la factorielle. (n1 * n2 * .. ) / n! donne le nombre requis. 1000! factorielle n'est pas que les grandes d'un certain nombre pour être honnête, justinwhite.com/big-calc/1000.html
  • Yep, 1000! n'est pas que les grandes d'un certain nombre seulement 559 chiffres pour remplir le reste de la zone de commentaire et un autre 2921 chiffres-dessus de la limite... 🙂
  • Plus dur (pas de passage unique en O(1) solution de l'espace) version de cette question est "Algorithme pour déterminer si le tableau contient n...n+m?" stackoverflow.com/questions/177118/...
  • Question légèrement différente, avec la même réponse: stackoverflow.com/questions/35185/...
  • Nouveau: stackoverflow.com/questions/1089987/...
  • Dupliquer: stackoverflow.com/questions/555744/...
  • astuce de question - réponse a été traîner aussi longtemps que la question a :-/
  • Le problème est que, après chaque numéro s'affiche qu'une seule fois (nous avons 1001 différents nombres entiers) + 1 répétées nombre = 1002 entiers

InformationsquelleAutor SysAdmin | 2010-04-09