我写了这个方法来找到数组中增长最长的子序列。我的问题是,在检查第二个for
循环中下一个索引是否更高之后,为什么我之后甚至必须使用else
块?如果我不这样做,它不会输出正确的结果。如果序列中的下一个更大,为什么仅currentSeq
增加1
是不够的呢?如果是false
,那么继续使用控制流,将currentSeq保留在1
处?
static void Main(string[] args)
{
int length = int.Parse(Console.ReadLine());
int[] nums = new int[length];
int currentSeq = 1;
int maxSeq = 1;
for (int i = 0; i < nums.Length; i++)
{
nums[i] = int.Parse(Console.ReadLine());
}
for (int i = 0; i < nums.Length - 1; i++)
{
if (nums[i] < nums[i + 1])
{
currentSeq++;
}
else
{
currentSeq = 1;
}
if (currentSeq > maxSeq)
{
maxSeq = currentSeq;
}
}
Console.WriteLine(maxSeq);
}
答案 0 :(得分:0)
您需要使用else关键字将currentSeq重置为1以进行下一次序列计算。想象一下,你完成了第一个序列并开始计算表中的下一个序列,你需要从1重新开始。