我想找出每个元素等于5的最大连续子序列。
我尝试为此编写代码,但找不到正确的方法
示例->如果序列类似于5 5 1 0 93 43 5 5 5 5 21 答案将是4,因为数组中存在4个连续的5。 附言我是一个新手。
int large(int a[],int n)
{
int i=0,j=0,sublen=0;
while(i<n)
{
if(a[i]==1)
{
sublen++;
for(int j=i+1;j<n;j++)
{
if(a[j]==1)
{
sublen++;
}
else
{
i=j+1;
continue;
}
}
}
else
{
i++;
}
}
return sublen;
}
答案 0 :(得分:1)
您可以简单地遍历该序列,当您看到5时增加一个计数器,否则将计数器重置为0。当您增加计数器测试以查看它是否是迄今为止保持的最大值时。最后返回最大值。
类似的东西:
int large(const int *a, int n)
{
int sublen = 0, counter = 0;
for (int i = 0; i < n; ++i) {
if (a[i] == 5) { // found a 5
++counter;
if (sublen < counter) { // test for largest value so far
sublen = counter;
}
} else { // not a 5
counter = 0;
}
}
return sublen;
}