在1维阵列中找到2个位置

时间:2010-05-25 08:34:34

标签: c#

在一个方法中,我正在计算最长的元素行。一维数组填充有随机值(0或1)。该方法查找最长的行(为0或1,无论什么是最长的) 例如:

1110100中,最长的行为3(3 * 1)
0110000中,最长的行将是4(4 * 0)

对于1110100,数组中的位置将为0到2。 对于0110000,数组中的位置将为3到6。

我一直尝试使用foreach循环,for循环等,但我似乎无法获得两者的正确索引,似乎无法正确显示两个位置。

最长的相似元素行计算如下based on my previous question

public int BerekenDeelrij (int [] table)
{
    int count = 0;
    int value = 0;
    int largest = 0;

    for (int i=0; i < tabel.Length; i++)
    {
        if (value == tabel[i])
            counter + +;
        else
        {
            largest = Math.Max largest (largest, counter);
            final value = value
            count = 1;
        }
    }
    return Math.Max(largest, counter);
}

2 个答案:

答案 0 :(得分:2)

如果您使用常规foreach()替换for(;;),则可以在需要时立即获取索引。

答案 1 :(得分:1)

我没有发布完整的代码,因为这是标记的家庭作业,但是解决这个问题的一种完全不同的方法是找到所有连续项目的出现,并将它们聚合成一个新的数组:

[0, 1, 1, 0, 0, 0, 0] => ["0", "11", "0000"]

然后您可以按item.Length订购,降序,选择前1项,即“0000”

之后,加入聚合数组

["0", "11", "0000"] => "0110000"

然后从那里返回joinedResult.IndexOf( longestItem )和该索引+ longestItem.Length