dimanche 7 avril 2024

triez le tableau dans l'ordre croissant en fonction de la fréquence des valeurs

 etant donee un table d'entiers nums, triez le tableau dans l'ordre croissant en fonction de la fréquence des valeurs. Si plusieurs valeur ont la meme fréquence, triez les par l'ordre décroissant. Renvoie le tableu trie

====================

using System; using System.Collections.Generic; using System.Linq; public class Solution { public int[] FrequencySort(int[] nums) { // Compter la fréquence de chaque valeur Dictionary<int, int> frequencyMap = new Dictionary<int, int>(); foreach (int num in nums) { if (!frequencyMap.ContainsKey(num)) { frequencyMap[num] = 0; } frequencyMap[num]++; } // Comparateur personnalisé pour trier les éléments en fonction de leur fréquence Comparateur comparer = new Comparateur(frequencyMap); // Trier le tableau en utilisant le comparateur personnalisé Array.Sort(nums, comparer); return nums; } // Comparateur personnalisé private class Comparateur : IComparer<int> { private readonly Dictionary<int, int> frequencyMap; public Comparateur(Dictionary<int, int> map) { frequencyMap = map; } public int Compare(int x, int y) { int freqX = frequencyMap[x]; int freqY = frequencyMap[y]; // Si les fréquences sont différentes, trie par ordre croissant de fréquence if (freqX != freqY) { return freqX.CompareTo(freqY); } // Si les fréquences sont égales, trie par ordre décroissant de valeur else { return y.CompareTo(x); // ordre décroissant } } } } public class Program { public static void Main(string[] args) { Solution solution = new Solution(); int[] nums = {1, 1, 2, 2, 2, 3}; int[] sortedNums = solution.FrequencySort(nums); Console.WriteLine("Tableau trié selon la fréquence des valeurs : [" + string.Join(", ", sortedNums) + "]"); } }


Aucun commentaire:

Enregistrer un commentaire