Найти наибольшее количество идущих подряд элементов одного знака - C# (180879)
Формулировка задачи:
Дан целочисленный массив из n элементов. Элементы массива могут принимать целые значения
от – 20 до 20, отличные от 0. Найдите наибольшее количество идущих подряд элементов одного
знака.
Решение задачи: «Найти наибольшее количество идущих подряд элементов одного знака»
textual
Листинг программы
using System;
using System.Linq;
class Program
{
static void Main()
{
int[] arr = Enumerable.Repeat(new Random(), 50)
.Select(r =>
{
int n = r.Next(-20, 20);
return n == 0 ? 20 : n;
})
.ToArray();
Console.WriteLine(String.Join(", ", arr));
int maxLength = 0;
int curLength = 0;
int prevSign = 2; // impossible value
for (int i = 0; i < arr.Length; i++)
{
int curSign = Math.Sign(arr[i]);
if (curSign == prevSign)
{
curLength++;
maxLength = Math.Max(maxLength, curLength);
}
else
{
curLength = 1;
}
prevSign = curSign;
}
Console.WriteLine(maxLength);
}
}