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