计算数组中的交替数字

kei*_*en7 7 c# algorithm

给定一系列整数......

var numbers = new int[] { 1,2,1,2,1,2,1,2,1,2,1,2,1,2,2,2,1,2,1 };
Run Code Online (Sandbox Code Playgroud)

我需要确定一个最大的数字序列,然后向上或向下交替然后向上交替.

不确定最好的方法来解决这个问题,这个过程明智地让我觉得简单,但实现它的代码却在逃避我.

关键是我们正在寻找最大序列的事实,所以虽然上述数字可以通过多种方式解释,例如七个上下行和七个上下行的序列,重要的事实是从第一个数字开始有一个14长的下行顺序.

另外我不应该计算第一个项目,121是长度为3的序列,可以认为序列直到第二个数字才开始但不允许分裂头发.

Abe*_*ler 1

可能有很多方法可以解决这个问题,但这里有一个选择:

var numbers = new int[] { 7,1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 2, 1, 2, 1 };
int maxCount = 0;
for (int j = 0; j+1 < numbers.Length; j++)
{
    int count = 0;
    if (numbers[j] < numbers[j+1])
    {
        count += 2;
        for (int i = j+2; i+1 < numbers.Length; i += 2)
        {
            if (numbers[i] < numbers[i + 1] )
            {
                count += 2;
            }
            else
            {
                break;
            }
        }
    }
    if (maxCount < count)
    {
        maxCount = count;
    }
}
Console.WriteLine(maxCount);
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

此解决方案假设您需要相同的两个交替数字的序列。如果这不是要求,您可以更改第二个if

现在写出来了,看起来比我脑子里想象的要复杂……也许其他人可以想出更好的解决方案。