Java 矩阵特殊遍历的智能方法
我必须遍历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) //
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循环之后重新分配?否。相邻元素的初始值取决于它