【发布时间】:2020-01-12 09:28:10
【问题描述】:
我正在为大学编写算法。除了最后一件事,我几乎拥有一切。 我现在有锯齿状的数字数组,这个数组的例子:
[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];
}
}
}
但它并没有按应有的方式工作。
【问题讨论】:
-
[0] [1] [2] [3]是数组的一部分,还是只是索引? -
为什么要在 if 语句中比较长度?
-
这是导致问题的 if 语句和 if 语句中的内容。确保正确使用 i 和 j 变量来操作数组。
-
您可能需要一个二级数据结构(例如字典)来存储重复的数字及其位置。您的数组的第一遍填充此字典 - 第二遍使用此信息删除重复项
-
Pavel Anikhouski 它们是索引。
标签: c# arrays duplicates