Вывести наиболее встречающийся элемент в массиве - C#

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

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

Сначала вводим кол-во тестов k, далее вводим кол-во элементов в массиве и сам массив, повторяем пока не пройдём все тесты k. Если кол-во наиболее встречающийся элементов одинаково, выводим 0. Пример:

Ввод:

2 6 1 2 5 2 1 2 4 5 5 4 4

Вывод:

2 0

Решение задачи: «Вывести наиболее встречающийся элемент в массиве»

textual
Листинг программы
  1.         // пример использования:
  2.         public static void Main(string[] args)
  3.         {
  4.             int length = 10; // int.Parse(Console.ReadLine());
  5.             string arrayText = "3 1 2 3 1 2 4 4 4 0"; // Console.ReadLine();
  6.            
  7.             string[] arrayItems = arrayText.Split(new char[] { ' ' }, length, StringSplitOptions.RemoveEmptyEntries);
  8.             int[] numbers = Array.ConvertAll(arrayItems, int.Parse);
  9.            
  10.             int mostFrequentItem = GetMostFrequentArrayItem(numbers);
  11.            
  12.             Console.WriteLine(mostFrequentItem); // mostFrequentItem будет равен 4
  13.         }
  14.        
  15.         // для удобства использования алгоритм выделен в отдельный метод
  16.         private int GetMostFrequentArrayItem(int[] numbers)
  17.         {
  18.             int length = numbers.Length;
  19.             Dictionary<int, int> counts = new Dictionary<int, int>(length);
  20.             for (int index = 0; index < length; ++index)
  21.             {
  22.                 int current = numbers[index];
  23.                 if (counts.ContainsKey(current))
  24.                 {
  25.                     counts[current]++;
  26.                 }
  27.                 else
  28.                 {
  29.                     counts.Add(current, 1);
  30.                 }
  31.             }
  32.  
  33.             bool moreThanOneMaximum = false;
  34.             int maxCount = -1;
  35.             int maxNumber = -1;
  36.  
  37.             foreach (var pair in counts)
  38.             {
  39.                 if (pair.Value > maxCount)
  40.                 {
  41.                     maxNumber = pair.Key;
  42.                     maxCount = pair.Value;
  43.                     moreThanOneMaximum = false; // изменение вот тут - добавил сброс флага
  44.                 }
  45.                 else if (pair.Value == maxCount)
  46.                 {
  47.                     moreThanOneMaximum = true; // и вот тут - убрал break;
  48.                 }
  49.             }
  50.  
  51.             return (moreThanOneMaximum) ? 0 : maxNumber;
  52.         }

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


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

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

6   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы