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

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

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

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

Ввод:

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

Вывод:

2 0

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

textual
Листинг программы
        // пример использования:
        public static void Main(string[] args)
        {
            int length = 10; // int.Parse(Console.ReadLine());
            string arrayText = "3 1 2 3 1 2 4 4 4 0"; // Console.ReadLine();
            
            string[] arrayItems = arrayText.Split(new char[] { ' ' }, length, StringSplitOptions.RemoveEmptyEntries);
            int[] numbers = Array.ConvertAll(arrayItems, int.Parse);
            
            int mostFrequentItem = GetMostFrequentArrayItem(numbers);
            
            Console.WriteLine(mostFrequentItem); // mostFrequentItem будет равен 4
        }
        
        // для удобства использования алгоритм выделен в отдельный метод
        private int GetMostFrequentArrayItem(int[] numbers)
        {
            int length = numbers.Length;
            Dictionary<int, int> counts = new Dictionary<int, int>(length);
            for (int index = 0; index < length; ++index)
            {
                int current = numbers[index];
                if (counts.ContainsKey(current))
                {
                    counts[current]++;
                }
                else
                {
                    counts.Add(current, 1);
                }
            }
 
            bool moreThanOneMaximum = false;
            int maxCount = -1;
            int maxNumber = -1;
 
            foreach (var pair in counts)
            {
                if (pair.Value > maxCount)
                {
                    maxNumber = pair.Key;
                    maxCount = pair.Value;
                    moreThanOneMaximum = false; // изменение вот тут - добавил сброс флага
                }
                else if (pair.Value == maxCount)
                {
                    moreThanOneMaximum = true; // и вот тут - убрал break;
                }
            }
 
            return (moreThanOneMaximum) ? 0 : maxNumber;
        }

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


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

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

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