Java 矩阵特殊遍历的智能方法

Java 矩阵特殊遍历的智能方法,java,matrix,traversal,Java,Matrix,Traversal,我必须遍历java中的nxn矩阵(因此索引为0,…,n-1),为单个元素赋值。我必须从右下角开始,到达左上角。其特殊之处在于,我不必考虑之前已经初始化的矩阵[n-1 ] [n-1 ] < /代码>元素。相邻值在初始化时相互依赖,必须先初始化 一种方法是在for循环中插入if for (i = n-1; i >= 0; i--) for (j = n-1; j >= 0; j--) if (i == n - 1 && j == n - 1) //

我必须遍历java中的
nxn
矩阵(因此索引为0,…,n-1),为单个元素赋值。我必须从右下角开始,到达左上角。其特殊之处在于,我不必考虑之前已经初始化的<代码>矩阵[n-1 ] [n-1 ] < /代码>元素。相邻值在初始化时相互依赖,必须先初始化

一种方法是在
for
循环中插入
if

for (i = n-1; i >= 0; i--)
  for (j = n-1; j >= 0; j--)
    if (i == n - 1 && j == n - 1)
      //initialize particular value
    else
      //initialize others
但在我看来,这似乎有点低效

另一种方法是在循环外初始化值
矩阵[n-1][n-1]
,然后对循环执行3次
(一次用于底线,一次用于最右边的列,一次用于其他元素)。但这似乎有点不雅


因此,如果存在的话,我正在寻找一种解决方案,该解决方案只涉及两个annidate
,并且在每个循环中都没有控制(如第一个示例)。

这里有一种方法,它通过矩阵使用一个循环,从而很容易避免矩阵[n-1][n-1]。从性能角度看,不确定计算结果与if相比如何

int[][] matrix = new int[n][n];

int current = n * n - 2;
int row = 0;
int col = 0;
while (current >= 0) {
    col = current % n;
    row = current / n;

    matrix[row][col] = //init stuff
    current--;
}

这里是一种通过矩阵使用一个循环的方法,这使得很容易避免矩阵[n-1][n-1]。从性能角度看,不确定计算结果与if相比如何

int[][] matrix = new int[n][n];

int current = n * n - 2;
int row = 0;
int col = 0;
while (current >= 0) {
    col = current % n;
    row = current / n;

    matrix[row][col] = //init stuff
    current--;
}

我认为Joakim的解决方案是好的,除了%和/或操作。。。受此启发,我发现了一个有趣的变体,可以避免它们。我调用了列索引
j1
,以避免其他“正常”循环出现问题


我认为Joakim的解决方案是好的,除了%和/或操作。。。受此启发,我发现了一个有趣的变体,可以避免它们。我调用了列索引
j1
,以避免其他“正常”循环出现问题


存储嵌套for之前的值,并在for循环之后重新分配?否。相邻元素的初始值取决于它存储嵌套for之前的值,并在for循环之后重新分配?否。相邻元素的初始值取决于它