在阅读了 10 多个关于将整个数组从二维转换为一维以及反之的线程后,我想知道是否有一个数学公式,不需要迭代来返回一对的索引位置排序的二维数组的整数。
我的“网格”始终是正方形,可以是任意大小(在本例中为 3x3),并且我有一个排序的人类友好值 block ,我需要从中检索我所谓的“真正的一维索引” “像这样:
"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, 等等……
我玩过六个方程式,尝试将坐标添加到前一行索引的平方,但我永远无法为网格中的每个单元格获得正确的结果。我缺少一些特殊的运算符或数学函数吗?
谢谢。
最佳答案
让矩阵为 3*3,3 行和 3 列,我们必须找到 (i,j) 的索引,然后公式将是。 指数= 3*(i-1)+j;
注意:- 这里的 3*3 和 i,j 不是 java 二维数组格式,而是人类友好的坐标。
示例 (i,j)=(2,3) 指数=3*(2-1)+3 =6 由于您的索引从 0 开始,您可以简单地从 6 中减去 1,即 5。
关于java - 为坐标对的二维数组返回一维数组的整数索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42991149/