LeetCode:498. 对角线遍历

问题链接

498. 对角线遍历

问题描述

给你一个大小为 m x n 的矩阵mat,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。

示例

image.png

解题思路

还能有啥思路,直接模拟暴力破解;
注意一下遍历的方向,小心数组下标越界即可。
又是在LeetCode签到划水的一天~

代码示例(JAVA)

class Solution {
    public int[] findDiagonalOrder(int[][] mat) {
        int m = mat.length;
        int n = mat[0].length;
        int[] result = new int[m * n];

        int count = 0;
        for (int i = 0; i < m + n - 1; i++) {
            for (int j = i; j >= 0; j--) {
                // i%2控制遍历方向
                // 注意下标越界
                if (i % 2 != 0 && j <= n - 1 && i - j <= m - 1) {
                    result[count++] = mat[i - j][j];
                } else if (i % 2 == 0 && j <= m - 1 && i - j <= n - 1) {
                    result[count++] = mat[j][i - j];
                }
            }
        }

        return result;
    }
}

你可能感兴趣的:(LeetCode:498. 对角线遍历)