Saya baru-baru ini melihat kode Javascript ini di StackOverflow untuk menggabungkan dua array , dan menghapus duplikat:
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();
Sementara kode ini berfungsi, itu sangat tidak efisien (O(n^2)
). Tantangan Anda adalah membuat algoritma dengan kompleksitas yang lebih sedikit.
Kriteria yang menang adalah solusi dengan kompleksitas paling sedikit , tetapi hubungan akan terputus dengan karakter terpendek.
Persyaratan :
Kemas semua kode Anda bersama-sama dalam suatu fungsi yang memenuhi persyaratan berikut untuk "kebenaran:"
- Input: Dua array
- Output: Satu array
- Menggabungkan elemen dari kedua array secara bersamaan- Setiap elemen dalam array input harus dalam array yang di-output.
- Array yang dihasilkan tidak boleh memiliki duplikat.
- Pesanan tidak masalah (tidak seperti yang asli)
- Bahasa apa pun penting
- Jangan gunakan fungsi array perpustakaan standar untuk mendeteksi keunikan atau menggabungkan set / array (meskipun hal-hal lain dari perpustakaan standar baik-baik saja). Biarkan saya membuat perbedaan bahwa rangkaian array baik-baik saja, tetapi fungsi yang sudah melakukan semua hal di atas tidak.
[1, 2, 2, 3]
dan [2, 3, 4]
pengembalian [1, 2, 2, 3, 4]
atau [1, 2, 3, 4]
?