IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Test de recrutement


Sujet :

Algorithmes et structures de données

  1. #1
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 330
    Points : 85
    Points
    85
    Par défaut Test de recrutement
    Salut,

    Je cherche la réponse à un test de recrutement sur lequel j'ai coincé :
    J'ai un tableau de taille N qui contient tous les nombres entre 1 et N dans un ordre aléatoire. A ce tableau je retire un nombre et je le remplace par un autre. Comment trouver le nombre qui a disparu et le nombre qui est présent en double en ne parcourant qu'une fois le tableau (algo en O(N)) ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 301
    Points : 345
    Points
    345
    Par défaut
    Tu crées un tableau T de taille N initialisé à 0, tu boucles sur les éléments de ton tableau Src et tu fais T[Src[i]] += 1
    A la fin tu boule sur T et tu mémorises les positions pour lesquelles tu as soit 0 soit 2.
    L'algo est en O(2*N) ~ O(N)

  3. #3
    Membre expérimenté Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 886
    Points : 1 526
    Points
    1 526
    Par défaut
    Tu calcules en un seul passage la somme des termes du tableau et la somme des carrés des termes. Connaissant la somme théorique des nombres (des carrés des nombres) de 1 à N, tu peux en déduire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    x - y = a
    x² - y² = b
    (où x est le nombre qui a été remplacé par y)

    Tu remplaces y par (x - a) dans la seconde équation, tu résoud, et tu as x, puis y facilement.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 301
    Points : 345
    Points
    345
    Par défaut
    Joli! Juste une remarque pour le PO: la complexité des deux algos proposés est identique; le fait que je propose de boucler 2 fois sur le tableau est équivalent à la proposition de 10_GOTO_10 de calculer la somme cumulée + la somme cumulée des carrés. Cependant, la méthode de 10_GOTO_10 est bien plus avantageuse au niveau occupation mémoire (deux entiers à mémoriser au lieu d'un tableau à allouer). En tout cas, je suis fan de l'approche mathématique proposé par 10_GOTO_10

Discussions similaires

  1. Réponses: 51
    Dernier message: 04/07/2014, 15h59
  2. Réponses: 4
    Dernier message: 17/06/2014, 11h00
  3. Test de recrutement Java Swing
    Par SI_BDD dans le forum SSII
    Réponses: 2
    Dernier message: 07/01/2014, 17h15
  4. [Projet] Création d'un bon test de recrutement PHP
    Par Invité dans le forum Langage
    Réponses: 25
    Dernier message: 07/09/2011, 10h22
  5. test de recrutement hyproc
    Par dey84 dans le forum Emploi
    Réponses: 1
    Dernier message: 17/12/2009, 17h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo