是否有一種有效的方法來連接陣列中的塊,如下所示:
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];
}
}
對不起,但我不知道如何更具體,我什至不知道如何搜索這個。
uj5u.com熱心網友回復:
你可以嘗試這樣的事情:
using System.Linq;
...
private static int[,] MyCombine(int[,] source) {
List<int[]> list = new List<int[]>();
int[] last = null;
for (int r = 0; r < source.GetLength(0); r)
if (last == null || last[1] 1 < source[r, 0]) {
if (last != null)
list.Add(last);
last = new int[] { source[r, 0], source[r, 1] };
}
else
last[1] = source[r, 1];
if (last != null)
list.Add(last);
int[,] result = new int[list.Count, 2];
for (int r = 0; r < list.Count; r)
for (int c = 0; c < list[r].Length; c)
result[r, c] = list[r][c];
return result;
}
演示:
int[,] original = new int[,] {
{ 1, 2 },
{ 4, 7 },
{ 8, 10 },
{15, 20 },
{21, 25 },
};
int[,] result = MyCombine(original);
string report = "[" string.Join(", ", Enumerable
.Range(0, result.GetLength(0))
.Select(r => $"[{result[r, 0]}, {result[r, 1]}]")) "]";
Console.Write(report);
結果:
[[1, 2], [4, 10], [15, 25]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/395618.html
上一篇:在javascript.ES6中按多個值對陣列物件進行分組的最佳方式
下一篇:多項式的確定
