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