gpt4 book ai didi

C#从锯齿状数组中删除重复项

转载 作者:行者123 更新时间:2023-12-03 21:37:52 24 4
gpt4 key购买 nike

我正在为大学编写算法。除了最后一件事,我几乎拥有一切。我现在有锯齿状的数字数组,这个数组的例子:

[0][1]
[1][11,12]
[2][3,7,11,15]
[3][6,7,10,11]

我需要删除重复项,例如删除所有下一行中存在于上一行中的每个数字。输出应该是这样的:

[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];
}
}
}

但它没有按应有的方式工作。

最佳答案

您可以使用 Except 解决它System.Linq 命名空间中的方法。

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

int[][] jaggedArray = new int[4][];

jaggedArray[0] = new[] { 1 };
jaggedArray[1] = new[] { 11, 12 };
jaggedArray[2] = new[] { 3, 7, 11, 15 };
jaggedArray[3] = new[] { 6, 7, 10, 11 };

for (int i = 0; i < jaggedArray.Length; i++)
{
var currentRow = jaggedArray[i];
for (int j = i + 1; j < jaggedArray.Length; j++)
{
var result = jaggedArray[j].Except(currentRow);
jaggedArray[j] = result.ToArray();
}
}

如果打印结果数组

foreach (var array in jaggedArray)
{
foreach (var item in array)
Console.Write($"{item} ");

Console.WriteLine();
}

输出如下

result

关于C#从锯齿状数组中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59702505/

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