Найти наиболее часто встречающееся число
В случайном массиве целых чисел с количеством элементов N найти наиболее часто встречающееся число. Если таких чисел несколько, то определить наименьшее из них.
Ответы (1 шт):
Автор решения: A K
→ Ссылка
Например, с помощью linq:
public int FrequentlyNumber(int[] nums)
{
return nums.GroupBy(x => x)
.ToDictionary(x => x.Key, y => y.Count())
.OrderByDescending(x => x.Value)
.ThenBy(x => x.Key)
.Take(1)
.Select(x => x.Key)
.First();
}
Вызывать так:
Console.WriteLine(FrequentlyNumber(new int[] { 1, 2, 2, 3, 4, 4 })); // expected: 2
Console.WriteLine(FrequentlyNumber(new int[] { 1, 2, 2, 4, 4, 4 })); // expected: 4
Console.WriteLine(FrequentlyNumber(new int[] { 1, 2, 3, 4, 5, 6 })); // expected: 1
Update. В комментариях @Андрей NOP справедливо указывает, что некоторые шаги излишни и можно сократить:
public int FrequentlyNumber(int[] nums)
{
return nums.GroupBy(x => x)
.OrderByDescending(x => x.Count())
.ThenBy(x => x.Key)
.Select(x => x.Key)
.First();
}