Напишите функцию поиска самой длинной цепочки из подряд идущих одинаковых элементов в массиве - C#
Формулировка задачи:
Напишите функцию поиска самой длинной цепочки из подряд идущих одинаковых элементов в массиве
Решение задачи: «Напишите функцию поиска самой длинной цепочки из подряд идущих одинаковых элементов в массиве»
textual
Листинг программы
public struct Chain
{
public int element;
public int length;
public int index;
}
public static Chain findMaxChain (int [] arr){
//МАКСИМАЛЬНАЯ ЦЕПОЧКА
Chain Max =new Chain();
Max.element=arr[0];
Max.length=1;
Max.index=0;
//ТЕКУЩАЯ ЦЕПОЧКА
Chain Current =new Chain();
Current.element = arr[0];
Current.length=0;
Current.index=1;
for(int i=1;i<arr.Length;i++)
{
//Цепочка не закончилась
if (arr[i]==Current.element) { Current.length++; continue;}
//Цепочка закончилась, она больше максимальной
if (Current.length > Max.length){Max = Current;}
//Новая цепочка пошла
Current.element = arr[i]; Current.length = 1; Current.index = i;
}
//Случай, когда последняя цепочка максимальная
if (Current.length > Max.length) { Max=Current; }
return Max;
}