0
votes

Comment vérifier si INT se produit dans la liste 3 fois?

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 commentaires

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?


3 Réponses :


5
votes

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


0 commentaires

1
votes

L'utilisation peut utiliser un dictionnaire pour cela. Complexité de temps O (n) complexité de l'espace O (n) xxx


0 commentaires

0
votes
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);

0 commentaires