Ich habe kürzlich diesen Javascript-Code auf StackOverflow gesehen, um zwei Arrays zusammenzuführen und Duplikate zu entfernen:
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();
Während dieser Code funktioniert, ist er schrecklich ineffizient ( O(n^2)
). Ihre Herausforderung besteht darin, einen Algorithmus mit weniger Komplexität zu erstellen.
Das Gewinnkriterium ist die Lösung mit der geringsten Komplexität , aber die Bindungen werden durch die kürzeste Länge der Zeichen unterbrochen.
Anforderungen :
Packen Sie Ihren gesamten Code in eine Funktion, die die folgenden Anforderungen für "Korrektheit" erfüllt:
- Eingabe: Zwei Arrays
- Ausgabe: Ein Array
- Führt Elemente beider Arrays zusammen. Jedes Element in einem der Eingabearrays muss sich im ausgegebenen Array befinden.
- Das ausgegebene Array sollte keine Duplikate enthalten.
- Bestellung spielt keine Rolle (im Gegensatz zum Original)
- Jede Sprache zählt
- Verwenden Sie die Array-Funktionen der Standardbibliothek nicht zum Erkennen von Eindeutigkeiten oder zum Zusammenführen von Mengen / Arrays (obwohl andere Elemente aus der Standardbibliothek in Ordnung sind). Lassen Sie mich unterscheiden, dass die Array-Verkettung in Ordnung ist, Funktionen, die bereits alle oben genannten Funktionen ausführen, jedoch nicht.
[1, 2, 2, 3]
und [2, 3, 4]
zurückkehren [1, 2, 2, 3, 4]
oder [1, 2, 3, 4]
?