Поиск наибольшего подмассива дупликатов в массиве дупликатов
Код не самый лучший, пока только учусь.
static void DuplicateArr(ref int[] arr)
{
Array.Sort(arr);
int[] clearArr = new int[arr.Length];
for (int i = 0; i < clearArr.Length; i++)
{
clearArr[i] = -969696;
}
for (int i = 0; i < arr.Length; i++)
{
for (int j = i+1; j < arr.Length; j++)
{
if (arr[i] == arr[j])
{
if (arr[i] == arr[j-1] && arr[i] == arr[j])
{
clearArr[i] = arr[j];
clearArr[i + 1] = arr[j];
}
else
clearArr[i] = arr[j];
}
}
}
arr = clearArr;
}
static int[] Cleaner(ref int[] arr)
{
DuplicateArr(ref arr);
Array.Sort(arr);
return arr;
}
int[] mass = { 3,3,2,4,4,6,7,-3,4,4,12,48,8,8,8,8,48,8,8,3};
Cleaner(ref mass);
foreach (var z in mass)
{
Console.Write(z + " ");
}
Сначала метод DuplicateArr записывает все элементы, которые повторяются в новый массив, но возникает проблема с нулём, так как указать изначально длинну clearArr я не могу, поэтому записываю в массив число -969696. Вот такой костыль. В общем уже в методе cleaner Я сортирую полученный массив и мне нужно достать из него самый большой подмассив дупликатов, не считая -969696.
{-969696, -969696, -969696, -969696, -969696, 3, 3, 3, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8, 48, 48}
Понять как реализовать это, найти начальный и конечный индекс подмассива мне не хватает ума
Источник: Stack Overflow на русском