var arr1 = [1,2,3,4,5,6,7]
var arr2 = [3,5,7,9,12,14]
Trouvez le tableau fusionné de deux tableaux après avoir supprimé les éléments en double (en référence à la suppression des éléments en double des deux côtés, par exemple, si 3 est répété, il ne peut pas y avoir 3 dans le résultat, ce qui est différent de la déduplication de tableau), c'est-à-dire l'union moins l'intersection de la partie tableaux, je ne sais pas si cette partie a un nom mathématique. Vous recherchez un algorithme avec une complexité temporelle moindre ?
Utilisez set comme index, puis parcourez le O(n) le plus court
Pour trouver les parties qui ne se chevauchent pas de deux ensembles, vous pouvez d'abord trouver l'union des deux ensembles, puis supprimer les éléments communs.
A∪B - A∩B = { x | (x∈A & x∉B) || (x∉A & x∈B) }
L'implémentation utilisant une idée de programme est la suivante :
Fusionnez les deux tableaux, puis utilisez la méthode de filtrage pour filtrer les éléments d'intersection dans les tableaux a et b. Filtrez les éléments dans a.concat(b) où a n'est pas dans b et où b n'est pas dans a. Cela implique principalement de déterminer si un tableau contient un élément. Il existe trois méthodes d'implémentation : Array.prototype.indexOf, la méthode has de Set et Array.prototype.includes.
Méthode d'implémentation utilisant la méthode indexOf d'ES5 sans considérer NaN :
Utilisez la nouvelle méthode de collection Set dans ES6 et combinez-la avec la méthode de filtrage pour filtrer le tableau fusionné.
Utilisez la nouvelle méthode de tableau Array.prototype.includes dans ES7 pour indiquer si un tableau contient des éléments spécifiés et combinez-la avec la méthode de filtrage pour filtrer le tableau fusionné.
Ce résultat est appelé différence symétrique, qui est définie sur un ensemble ou un multiensemble
Complexité... moyenne
O(n)
----------J'ai lu la mauvaise question, la réponse est fausse, ce qui précède ne concerne que les doublons supprimés, voir ci-dessous-------------
---------------Vous pouvez le faire en parcourant simplement la boucle for de base--------------
La première méthode, pour
Le deuxième type, concaténer et filtrer, le principe est de fusionner puis de supprimer les doublons
Utiliser les propriétés des objets à implémenter
Capture d'écran