Я ищу более эффективный и простой способ подсчета количества элементов в массиве и частоты их появления. GroupBy - очевидный ответ, но тогда я бы хотел получить результат, который будет иметь те же размеры, что и исходный массив.
Я пишу это на C # и хочу использовать лямбда-выражения. Мой код работает, но должен быть лучший способ сделать что-то такое простое.
var testarray = new int[10]
{ 3, 3, 4, 1, 2, 5, 3, 1, 2, 5 };
var groups = testarray.GroupBy(p => p)
.Select(group => new
{
TestKey = group.Key,
Count = group.Count()
});
var final = testarray.Join(groups,
src => src,
dest => dest.TestKey,
(src, dest) => dest.Count
).ToArray();
Входной сигнал:
{ 3, 3, 4, 1, 2, 5, 3, 1, 2, 5 }
Ожидаемые и фактические результаты:
{3, 3, 1, 2, 2, 2, 3, 2, 2, 2}