Comment puis-je vérifier si mon tableau comporte des valeurs répétées à l'intérieur?
Voici donc mon tableau.
double[] testArray = new double[10];
//will generate a random numbers from 1-20, too lazy to write the code
Je veux faire une boucle de recherche afin de vérifier si des valeurs sont répétées. Comment dois-je faire?
Je préfère ne pas utiliser toute spéciale intégrée dans les méthodes, car c'est un petit tableau.
OriginalL'auteur puretppc | 2013-11-03
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire avec un peu de Linq:
La
Distinct
méthode d'extension supprime tous les doublons, etCount
obtient la taille de l'ensemble de résultats. Si elles diffèrent, il y a quelques doublons dans la liste.Sinon, ici, est un peu plus compliqué requête, mais il peut être un peu plus efficace:
La
Groupe
méthode de groupe identique éléments ensemble, etretour
true
si l'un des groupes a plus d'un élément.Les deux solutions fonctionnent en utilisant un
HashSet<T>
, mais vous pouvez l'utiliser directement comme ceci:Ou si vous préférez une solution qui ne repose pas sur Linq:
Voir ma réponse mis à jour
Oh, je vois. Donc si je ne veux contrôler les doublons, je viens de supprimer le Distinct() à droite? Et la méthode Count() qui signifie combien de fois elle a obtenu de dupliquer comme la taille de l'ensemble de résultats?
pas de
Count
retourne le nombre d'éléments dans l'ensemble, c'est à diretestArray.Length == testArray.Count()
. Pour obtenir le nombre de doublons, vous pouvez simplement la différence entre les deux, c'est à diretestArray.Length - testArray.Distinct().Count()
ok merci le second suffisamment bien fonctionné pour vérifier si il est un doublon ou pas.
OriginalL'auteur p.s.w.g
Générique de la méthode d'extension :
OriginalL'auteur Ali Bayat
Utiliser ceci:
OriginalL'auteur helb
jeter un regard à ma mise en œuvre de ses
generic
etefficient
voici quelques appels
IEnumerable
au lieu deIList
. J'ai aussi fait une méthode d'extension.OriginalL'auteur Basheer AL-MOMANI
Avec (OP) 10 doubles aléatoires assez rapide.
La chance de répéter: ~0.000002 %.
Plus générale, avec 10 numéros de ~2 fois plus lent que ci-dessus,
mais ~7 fois plus rapide que le hashset approche.
Deux lignes (lente, à répéter 😉
OriginalL'auteur P_P
Nous devons initialiser
j
dei
sur la première boucle et en ajouter une(i+1) parce que nous voulons comparer la première boucle de la valeur avec la valeur suivante de la même matrice.OriginalL'auteur Javidan Akberov