Минимальное количество значений в массиве - C#

Узнай цену своей работы

Формулировка задачи:

Допустим имеется одномерный массив
double[] mas = new double[] { 1, 1, 2, 2, 3, 4, 4, 4, 1, 0}
Нужно определить и вывести на экран какое число в массиве отличающееся от нуля имеет меньше всего повторений В данном случае должно быть min=3. Что-то ничего в голову не приходит как это реализовать.

Решение задачи: «Минимальное количество значений в массиве»

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);
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы