Минимальное количество значений в массиве - 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);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д