Для жизни меня застрял на том, как отслеживать максимальное количество последовательных отрицательных чисел.Последовательный алгоритм отрицательного числа
У меня есть список чисел, которые получают доступ к методу класса во время каждой итерации цикла for. Эти цифры могут быть положительными или отрицательными, и нет четкого способа узнать, что последует за этим. Мне нужен алгоритм, чтобы он мог вычислять в реальном времени (во время выполнения цикла) непрерывное последовательное отрицательное число. Таким образом, в конце итерации цикла число, хранящееся в consecutiveNegative
, будет целым числом, показывающим наибольшие последовательные времена, за которым после отрицательного числа следовало другое отрицательное число.
Ниже то, что я пытался, но он не работает ...
class Temp
{
public int consecutiveNegative = 0;
private bool previousNegative = false;
public void iterCall(int x)
{
if(x > 0)
{
if(previousNegative == true)
{
consecutiveNegative = 0;
}
previousNegative = false;
}
else if (x < 0)
{
if (previousNegative == false)
{
consecutiveNegative = consecutiveNegative + 1;
}
previousNegative = true;
}
}
}
Любые указатели?
Ниже приведен код, чтобы люди начали возиться.
Temp classTmp = new Temp();
List<int> nums = new List<int>();
nums.Add(1);
nums.Add(-1);
nums.Add(1);
nums.Add(-1);
nums.Add(-1);
nums.Add(-1);
nums.Add(1);
nums.Add(-1);
nums.Add(-1);
nums.Add(1);
for(int i = 0; i < nums.Count;i++)
{
classTmp.iterCall(nums[i]);
}
classTmp.consecutiveNegative
должно быть 3 после того, как она завершает цикл.
Не могли бы вы включить пример проблемы? Каким образом предлагаемый код не работает? – Codor
Ваш 'if (x <0)' неверен - что произойдет, если 'x <0' и' previousNegative == true'? –
см. Новый код, я сделал пример с игрушкой. Ответ должен быть 3, так как в этой серии вы видите максимальное число последовательных -1 равно 3. – user1234440