私は最近、2つの配列をマージし、重複を削除するためのStackOverflowでこのJavascriptコードを見ました:
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();
このコードは機能しますが、ひどく非効率的です(O(n^2)
)。あなたの課題は、複雑さの少ないアルゴリズムを作成することです。
勝利の基準は、最も複雑さの少ないソリューションですが、文字の最短の長さによって関係が壊れます。
要件:
「正確さ」に関する次の要件を満たす関数にすべてのコードをまとめてパッケージ化します。
- 入力:2つの配列
- 出力:1つの配列
- 両方の配列の要素を一緒にマージします-いずれかの入力配列の要素はすべて出力配列に含まれている必要があります。
- 出力された配列には重複がないはずです。
- 順序は関係ありません(オリジナルとは異なります)
- すべての言語が重要
- 標準ライブラリの配列関数を使用して、一意性を検出したり、セット/配列をマージしたりしないでください(ただし、標準ライブラリの他のものは大丈夫です)。配列の連結は問題ありませんが、上記のすべてを既に実行している関数は違います。
[1, 2, 2, 3]
て[2, 3, 4]
リターンする[1, 2, 2, 3, 4]
必要があり[1, 2, 3, 4]
ますか?