J'ai récemment vu ce code Javascript sur StackOverflow pour fusionner deux tableaux et supprimer les doublons:
Array.prototype.unique = function() {
var a = this.concat();
for(var i=0; i<a.length; ++i) {
for(var j=i+1; j<a.length; ++j) {
if(a[i] === a[j])
a.splice(j--, 1);
}
}
return a;
};
var array1 = ["Vijendra","Singh"];
var array2 = ["Singh", "Shakya"];
var array3 = array1.concat(array2).unique();
Bien que ce code fonctionne, il est horriblement inefficace ( O(n^2)
). Votre défi est de créer un algorithme avec moins de complexité.
Le critère gagnant est la solution la moins complexe , mais les liens seront rompus par la plus courte longueur de caractères.
Prérequis :
Empaquetez tout votre code ensemble dans une fonction qui répond aux exigences suivantes de «correction»:
- Entrée: deux tableaux
- Sortie: un tableau
- Fusionne les éléments des deux tableaux ensemble - Tout élément dans l'un ou l'autre tableau d'entrée doit être dans le tableau en sortie.
- Le tableau en sortie ne doit pas avoir de doublons.
- L'ordre n'a pas d'importance (contrairement à l'original)
- N'importe quelle langue compte
- N'utilisez pas les fonctions de tableau de la bibliothèque standard pour détecter l'unicité ou fusionner des ensembles / tableaux (bien que d'autres choses de la bibliothèque standard soient correctes). Permettez-moi de faire la distinction que la concaténation de tableaux est correcte, mais les fonctions qui font déjà tout ce qui précède ne le sont pas.
[1, 2, 2, 3]
et le [2, 3, 4]
retour devraient -ils [1, 2, 2, 3, 4]
ou [1, 2, 3, 4]
?