C#从锯齿阵列中删除重复项

C#从锯齿阵列中删除重复项,c#,arrays,duplicates,C#,Arrays,Duplicates,我正在为大学写一个算法。我几乎什么都有,除了最后一件。 我现在有了交错的数字数组,例如: [0][1] [1][11,12] [2][3,7,11,15] [3][6,7,10,11] 我需要删除重复项,比如删除所有下一行中的每个数字,即previos行中的数字。 输出应该如下所示: [0][1] [1][11,12] [2][3,7,15] [3][6,10] for (int i = 0; i <= numbers.Length + 1; i++) { int size =

我正在为大学写一个算法。我几乎什么都有,除了最后一件。 我现在有了交错的数字数组,例如:

[0][1]
[1][11,12]
[2][3,7,11,15]
[3][6,7,10,11]
我需要删除重复项,比如删除所有下一行中的每个数字,即previos行中的数字。 输出应该如下所示:

[0][1]
[1][11,12]
[2][3,7,15]
[3][6,10]
for (int i = 0; i <= numbers.Length + 1; i++)
{
    int size = numbers[i].Length;
    for (int j = 0; j < size; j++)
    {
        if (numbers[i][numbers[i].Length] != numbers[i + 1][numbers[i + 1].Length])
        {
            newNumbers[i][j] = numbers[i][j];
        }
    }
}
我试过这样的方法:

[0][1]
[1][11,12]
[2][3,7,15]
[3][6,10]
for (int i = 0; i <= numbers.Length + 1; i++)
{
    int size = numbers[i].Length;
    for (int j = 0; j < size; j++)
    {
        if (numbers[i][numbers[i].Length] != numbers[i + 1][numbers[i + 1].Length])
        {
            newNumbers[i][j] = numbers[i][j];
        }
    }
}
for(inti=0;i您可以使用
System.Linq
命名空间中的方法来解决它

在每次循环迭代中,遍历所有下一行,获得这些行与当前行之间的差异并重新分配。这是可能的,因为数组的元素是数组,并且所有项的
int
数据类型都相同

int[]jaggedArray=newint[4][];
jaggedArray[0]=new[]{1};
jaggedArray[1]=新[]{11,12};
jaggedArray[2]=新[]{3,7,11,15};
jaggedArray[3]=新[]{6,7,10,11};
for(int i=0;i
如果打印结果数组

foreach(jaggedArray中的变量数组)
{
foreach(数组中的变量项)
Write($“{item}”);
Console.WriteLine();
}
输出将如下所示

publicstaticint[][]删除的复制(此int[][]数据)
{
var result=newint[data.Length][];
使用的变量=新列表();
for(int i=0;i
是数组的一部分还是索引?为什么要比较if语句中的长度?是if语句和if语句中的内容引起了问题。请确保正确使用i和j变量来操作数组。您可能需要一个辅助数据结构(如字典)它存储重复的数字及其位置。数组的第一次遍历填充此字典-第二次遍历使用此信息删除重复的数字。它们是索引。如果非相邻行中存在重复的数字,这会起作用吗?OP提到从所有下一行中删除每个数字,即在主循环的每次迭代中,for
的内部
循环遍历所有下一行,直到数组结束loop@PavelAnikhouski这很有效,非常感谢。你刚刚让我避免了接下来几个小时坐在那里试图实现这一目标。