J'ai une liste contenant des INT, tous de 0-2. Maintenant, je dois vérifier si l'un de ces numéros survient exactement 3 fois. Comment vérifier cela?
Exemple: P>
{ 2, 1, 0, 0, 1, 0 } //this is true { 1, 1, 2, 0, 0 } //this is false { 0, 0, 0, 1, 1, 1, 2, 2, 2 } //this is true
3 Réponses :
Vous pouvez utiliser Linq pour cela:
bool containsNum3x = list .GroupBy(i => i) // group the 0s into a subset, the 1s into a subset, etc .Any(s => s.Count() == 3); // check if the size of any subset is exactly 3
L'utilisation peut utiliser un dictionnaire pour cela. Complexité de temps O (n) complexité de l'espace O (n)
private bool containsIntNTimes (List<int> intList, int lookFor, int amount) { foreach(int i in intList) { if(i == lookFor) amount--; if (amount == 0) return true; } return false; } containsIntNTimes(myIntList, 0, 3); containsIntNTimes(myIntList, 1, 3); containsIntNTimes(myIntList, 2, 3);
Est Java, Dart, C ++ (l'une d'entre elles) Mise en œuvre OK
@Jasurbek j'utilise c #
Avez-vous essayé d'utiliser une vieille boucle d'école?