在阅读了10多个关于将整个数组从2D转换为1D的线程之后,反之亦然,我想知道是否有数学公式,不需要迭代来返回一对的索引位置排序的2D数组的整数。
我的“网格”总是正方形,可以是任意大小(在这个例子中是3x3),我有一个人类友好值的排序块,我需要从中检索我所谓的“真正的1D索引” “像这样:
"Human-friendly" coordinates| Java 2D Indices | True 1D indices
[1,1],[1,2],[1,3], ==> [0,0],[0,1],[0,2], ==> 0 , 1 , 2
[2,1],[2,2],[2,3], ==> [1,0],[1,1],[1,2], ==> 3 , 4 , 5
[3,1],[3,2],[3,3], ==> [2,0],[2,1],[2,2], ==> 6 , 7 , 8
所以我需要一个方法让我的班级给我以下结果:
我输入1,1并返回0, 我输入3,2并返回7, 我输入2,3并返回5, 等等...
我已经玩了六个方程式,我尝试将坐标添加到前一行索引平方,我永远无法为网格中的每个单元格得到正确的结果。我缺少一些特殊的算子或数学函数吗?
感谢。
答案 0 :(得分:1)
让矩阵为3 * 3,3行和3列,我们必须找到(i,j)的索引,然后公式将是。 indices = 3 *(i-1)+ j;
注意: - 这里3 * 3和i,j不是java 2d数组格式,它是人类友好的坐标。
示例(i,j)=(2,3) indices = 3 *(2-1)+3 = 6 因为你的指数从0开始,你可以简单地从6中减去1,即5。
答案 1 :(得分:0)
如果索引名为[index1,index2],
1DIndex = (rowNumber*index1) + index2
其中rowNumber从第一行的1开始,index1和index2是Java索引。