一.题目描述
给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。
https://leetcode-cn.com/problems/diagonal-traverse/
二.代码
public int[] findDiagonalOrder(int[][] matrix) {
if (matrix == null || matrix.length == 0) {
return new int[0];
}
int m = matrix.length;
int n = matrix[0].length;
int[] nums = new int[m * n];
int k = 0;
boolean flag = true;
for (int i = 0; i < m + n - 1; i++) {
int pm = flag ? m : n;
int pn = flag ? n : m;
int x = i < pm ? i : pm - 1;
int y = i - x;
while (x >= 0 && y < pn) {
nums[k++] = flag ? matrix[x][y] : matrix[y][x];
x--;
y++;
}
flag = !flag;
}
return nums;
}