Убрать из массива элементы которые повторяются более чем два раза
Задача: убрать из массива элементы которые повторяются более двух раз
Идея: берём каждый элемент и считаем сколько раз он повторяется и если больше двух раз то пропускаем этот элемент и берём следующий, иначе переписываем в выходной массив Код:
private static int[] removeElementsThatAppearMoreThanTwice(int[] input)
{
int[] filtered = new int[input.Length];
for (int i = 0; i < input.Length; i++)
{
int countOfRepeat = 1;
for (int j = 0; j < input.Length; j++)
{
if (input[i] == input[j] && i != j)
{
countOfRepeat++;
}
}
if (countOfRepeat > 2)
{
continue;
}
filtered[i] = input[i];
}
return filtered;
}
Проблема в том что я не рационально использую память когда создаю отфильтрованный массив, делаю его тем же размером что и исходный, а хотелось бы каким-то образом создать ровно той длины которая потребуется для хранения элементов что появляются 2 и менее раз