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?