【发布时间】:2021-12-27 18:18:47
【问题描述】:
有没有一种有效的方法来连接数组中的块,如下所示:
original_array = [[1,2], [4,7], [8,10], [15,20], [21,25]]
new_array = [[1,2], [4,10], [15,25]]
如果它们之间的距离为 1,基本上我想加入数组的 2 个索引。
我尝试了类似的方法,但没有成功。
int[,] new_array = new int[500, 2];
int new_var = 0;
for (int k = 0; k < original_indexes; k++)
{
int dista = original_array [k + 1, 0] - original_array [k, 1];
if (dista < 10)
{
new_array[k, 0] = original_array[k, 0];
new_array[k, 1] = original_array[k + 1, 1];
new_var++;
}
else
{
new_array[k, 0] = original_array[k + new_var, 0];
new_array[k, 1] = original_array[k + new_var, 1];
}
}
对不起,我不知道如何更具体,我什至不知道如何搜索。
【问题讨论】:
-
这让我想起了 run-length encoding,您可以在其中指定 start 和 end(或 连续跨度的数字的开始和count)。那是你想要做的吗? 4 thgouth 7 和 8 到 10 是否有效地连续,因为 8 紧跟在 7 之后,因此可以用 4 到 10 的单个跨度来表示?这就是你想要做的吗?
-
是的,有点。我实际上想要一种可以更改此值的方式。这意味着如果我有 4 到 7 和 9 到 10,我可以加入他们,它变成 4 到 10。
-
有趣。为什么 4-7 会和 9-10 一起加入?我问是因为这些不是连续的数字范围。即:8 呢?
标签: c# arrays multidimensional-array