Maison >développement back-end >C++ >Comment puis-je comparer efficacement des listes massives pour détecter les écarts ?

Comment puis-je comparer efficacement des listes massives pour détecter les écarts ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-14 20:56:44824parcourir

How Can I Efficiently Compare Massive Lists to Find Discrepancies?

Un moyen efficace de comparer de grandes listes pour trouver des différences

La méthode Except est le meilleur choix lorsqu'il s'agit de comparaisons différentielles de très grandes listes génériques. Cette méthode est beaucoup plus efficace que la requête LINQ fournie dans l'article (la complexité temporelle est O(N * M)).

Utiliser la méthode Sauf

La méthode

Except renvoie une nouvelle liste contenant des éléments de la première liste qui ne sont pas présents dans la deuxième liste. Utilisez cette méthode avec les deux listes pour obtenir deux nouvelles listes :

<code>var firstNotSecond = list1.Except(list2).ToList();
var secondNotFirst = list2.Except(list1).ToList();</code>

La complexité temporelle de cette méthode est O(N M), ce qui est nettement plus rapide que la méthode précédente.

Fusionner les résultats

Pour déterminer si deux listes sont identiques, vous pouvez fusionner les deux listes de résultats :

<code>return !firstNotSecond.Any() && !secondNotFirst.Any();</code>

Notes sur les éléments répétitifs

Contrairement au code d'origine, la méthode Except ne signale qu'une seule fois les éléments en double dans la liste. Par exemple, si list1 contient [1, 2, 2, 2, 3] et list2 contient [1], alors en utilisant la méthode Except, le résultat de « éléments dans list1 mais pas dans list2 » sera [2, 3 ] , alors que le code original indiquerait [2, 2, 2, 3].

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn