java - 为坐标对的二维数组返回一维数组的整数索引

标签 java arrays matrix

在阅读了 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/

相关文章:

c++ - 如何从 C++ 中的函数返回矩阵(板)?

Java - 无法将窗口置于最前面

java - Sonar 违反 if 语句中未使用的方法

使用通用函数的 Python numpy 网格转换

c - .exe 中嵌入的二进制资源以及加载时的内存管理

javascript - 如何将值从数组放入 Zingchart.js

java - 如何从Java中的二叉搜索树中获取 "delete"节点?

java - 忽略 Java 中的 SSL 验证

c++ - 四元数到旋转矩阵 - 我是瞎了眼还是做错了?

r - 根据平均值删除列