Минимальное количество значений в массиве - C#
Формулировка задачи:
Допустим имеется одномерный массив
Нужно определить и вывести на экран какое число в массиве отличающееся от нуля имеет меньше всего повторений
В данном случае должно быть min=3.
Что-то ничего в голову не приходит как это реализовать.
double[] mas = new double[] { 1, 1, 2, 2, 3, 4, 4, 4, 1, 0}
Решение задачи: «Минимальное количество значений в массиве»
textual
Листинг программы
static void Main(string[] args) { double[] mas = new double[] { 1, 1, 2, 2, 3, 4, 4, 4, 1, 0 }; //1 Dictionary<double, int> groups = new Dictionary<double, int>(); for (int i = 0; i < mas.Length; i++) { if (mas[i] == 0) continue; if (!groups.ContainsKey(mas[i])) groups[mas[i]] = 1; else groups[mas[i]]++; } double minKey = 0; int minCount = mas.Length + 1; //Что-то достаточно большое, чтобы первый встреченный элемент был заведомо меньше foreach (var item in groups) { if (item.Value < minCount) { minCount = item.Value; minKey = item.Key; } } //2 //var minKey = mas.GroupBy(x => x).Where(x => x.Key != 0).OrderBy(x => x.Count()).First().Key; Console.WriteLine(minKey); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д