var arr1 = [1,2,3,4,5,6,7]
var arr2 = [3,5,7,9,12,14]
Cari tatasusunan gabungan dua tatasusunan selepas mengalih keluar elemen pendua (merujuk kepada pemadaman elemen pendua pada kedua-dua belah, contohnya, jika 3 diulang, tidak boleh ada 3 dalam hasilnya, yang berbeza daripada penduaan tatasusunan), iaitu, kesatuan tolak persilangan bahagian tatasusunan, saya tidak tahu sama ada bahagian ini mempunyai sebarang nama matematik. Mencari algoritma dengan kerumitan masa yang lebih rendah?
Gunakan set sebagai indeks dan kemudian lintasi O(n) yang lebih pendek
Untuk mencari bahagian yang tidak bertindih bagi dua set, anda boleh mencari gabungan dua set itu dahulu, kemudian alih keluar elemen sepunya.
A∪B - A∩B = { x |. (x∈A & x∉B) || (x∉A & x∈B) }
Pelaksanaan menggunakan idea atur cara ialah:
Gabungkan dua tatasusunan, dan kemudian gunakan kaedah penapis untuk menapis elemen persilangan dalam tatasusunan a dan b. Tapis unsur-unsur dalam a.concat(b) di mana a bukan dalam b dan di mana b bukan dalam a. Ia terutamanya melibatkan pertimbangan sama ada tatasusunan mengandungi elemen Terdapat tiga kaedah pelaksanaan: Array.prototype.indexOf, Set's has method dan Array.prototype.includes.
Kaedah pelaksanaan menggunakan kaedah indexOf ES5 tanpa mengambil kira NaN:
Gunakan kaedah pengumpulan Set baharu dalam ES6 dan gabungkannya dengan kaedah penapis untuk menapis tatasusunan yang digabungkan.
Gunakan kaedah tatasusunan.prototype.includes baharu dalam ES7 untuk mengembalikan sama ada tatasusunan mengandungi elemen tertentu dan gabungkannya dengan kaedah penapis untuk menapis tatasusunan yang digabungkan.
Hasil ini dipanggil perbezaan simetri, yang ditakrifkan pada set atau multiset
Kerumitan... sederhana
O(n)
----------Saya salah baca soalan, jawapan salah, di atas hanya pendua yang dibuang, lihat di bawah-------------
----------Anda boleh menyelesaikannya dengan hanya melintasi asas untuk gelung-----------------
Kaedah pertama, untuk
Jenis kedua, concat dan penapis, prinsipnya adalah untuk menggabungkan dan kemudian mengeluarkan pendua
Menggunakan sifat objek untuk melaksanakan
ScreenShot