java - 如何从左上角到右下角对角迭代二维数组

标签 java arrays matrix diagonal

我正在尝试为从左上角到右下角的所有对角线迭代一个方形二维数组。我有从左下角到右上角迭代的代码,但我需要对其进行调整以以其他方式迭代。

public static void main(String[] args) {
       int[][] a = {
                {1,   2,  3,  4},
                {0,   1,  2,  3},
                {-1,  0,  1,  2},
                {-2, -1,  0,  1},
        };
        for (int j = 0; j <= a.length + a.length - 2; j++) {
            for (int k = 0; k <= j; k++) { // cols
                int l = j - k; //  rows
                if (l < a.length && k < a.length) {
                    System.out.print(a[l][k] + " ");
                }
            }
            System.out.println();
        }
}

结果是:

1 
0 2 
-1 1 3 
-2 0 2 4 
-1 1 3 
0 2 
1 

这是从左下角到右上角的对角线。 如何调整该方法以其他方式打印对角线以产生以下结果:

-2
-1 -1
0 0 0
1 1 1 1
2 2 2 
3 3
4

感谢您的帮助。

最佳答案

只需镜像行地址

public static void main(String[] args) {
       int[][] a = {
                {1,   2,  3,  4},
                {0,   1,  2,  3},
                {-1,  0,  1,  2},
                {-2, -1,  0,  1},
        };
        for (int j = 0; j <= a.length + a.length - 2; j++) {
            for (int k = 0; k <= j; k++) { // cols
                int l = j - k; //  rows
                int mirror = a.lenght - l;
                if (mirror >= 0 && mirror < a.length && k < a.length) {
                    System.out.print(a[mirror][k] + " ");
                }
            }
            System.out.println();
        }
}

关于java - 如何从左上角到右下角对角迭代二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54725276/

相关文章:

java - Java中两个线程之间的时间延迟

java - OrientDB - OrientDB 函数不使用 Java 执行

java - 我还必须做什么才能让我的方法处理任何类型的对象

java - 误解了java中的泛型

java - 如何在 Java 中构造值数组

ios - UITableViewController 没有被 NSMutableArray 填充

ruby - 这是 Matrix 类中的 ruby​​ 错误吗?

java - Android 为什么我的 checkDB 一直给出 false?

matlab - 复制矩阵的一行或一列并将其插入下一行/列

python - NumPy 中矩阵列的 nanmean