Bonjour,
J'ai une petite question d’algorithmie.
Je dois avoir le cerveau gazé par ce lundi nuageux, mais il n'y a que des usines à gaz qui me viennent en tête, pour une problématique pourtant simple...
J'ai un objet :
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 class MonObjet { public int id; public string nom; public MonObject(int ID, string NOM) { id = ID; nom = NOM; } }
J'ai ensuite un List<MonObjet> initialisé de la sorte :
Je souhaite trouver l'ID de MonObjet qui a le moins d'occurences dans ma liste.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 List<MonObjet> maliste = new List<MonObjet>(); List.Add(new MonObjet(1, "Obj1")); List.Add(new MonObjet(2, "Obj2")); List.Add(new MonObjet(3, "Obj3")); List.Add(new MonObjet(3, "Obj3")); List.Add(new MonObjet(1, "Obj1")); List.Add(new MonObjet(1, "Obj1"));
J'ai pensé à faire une struct "Occurence" avec deux propriétés "id" et "nb", en faire un List, et pour chaque ligne de "maliste", alimenter une liste de "List<Occurence>", en incrémentant "nb" quand "id" existe déjà, ou en rajoutant une ligne...
Puis enfin parcourir mon "List<Occurence>" pour retrouver le "id" qui a le plus petit "nb".
Mais j'ai l'impression que je fais du grand n'importe quoi... Y'a pas plus simple ?
Ici, je voudrais donc retrouver "2".
Puisqu'il y a 3 occurences de l'id "1", 1 occurence de l'id "2" et 2 occurence de l'id "3".
Partager