gpt4 book ai didi

c# - 计算数组中的交替数字

转载 作者:太空狗 更新时间:2023-10-29 20:24:52 25 4
gpt4 key购买 nike

给定一个整数数组...

var numbers = new int[] { 1,2,1,2,1,2,1,2,1,2,1,2,1,2,2,2,1,2,1 };

我需要确定一个先上后下或先下后上交替的最大数字序列。

不确定解决这个问题的最佳方法,这个过程看似简单但让我难以理解的是它的具体化代码。

关键是我们正在寻找最大序列,所以虽然上面的数字可以用多种方式解释,比如一个由 7 个 up-down-up 和 7 个 down-up-down 组成的序列,但重要的是从第一个数字有一个 down-up-down 序列,长度为 14。

此外,我不应该计算第一项,121 是一个长度为 3 的序列,有人可能会争辩说该序列直到第二个数字才开始,但不要 split 头发。

最佳答案

这似乎可行,它假设数字的长度大于 4(无论如何这种情况应该是微不足道的):

var numbers = new int[] { 1,2,1,2,1,2,1,2,1,2,1,2,1,2,2,2,1,2,1 };
int count = 2, max = 0;
for (int i = 1; i < numbers.Length - 1; i++)
{

if ((numbers[i - 1] < numbers[i] && numbers[i + 1] < numbers[i]) ||
(numbers[i - 1] > numbers[i] && numbers[i + 1] > numbers[i]))
{
count++;
max = Math.Max(count, max);
}
else if ((numbers[i - 1] < numbers[i]) || (numbers[i - 1] > numbers[i])
|| ((numbers[i] < numbers[i + 1]) || (numbers[i] > numbers[i + 1])))
{
max = Math.Max(max, 2);
count = 2;
}
}
Console.WriteLine(max); // 14

关于c# - 计算数组中的交替数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11854559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com