Given a matrix of M x N elements (M rows, N columns), return all elements of the matrix in diagonal order as shown in the below image.
Input:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
Output:
[1,2,4,7,5,3,6,8,9]
Explanation:
class Solution {
public int[] findDiagonalOrder(int[][] matrix) {
if (matrix == null || matrix.length == 0) {
return new int[0];
}
int m = matrix.length, n = matrix[0].length;
int[] res = new int[m * n];
int row = 0, col = 0;
for (int i = 0; i < m * n; i++) {
res[i] = matrix[row][col];
// Moving up first
if ((row + col) % 2 == 0) {
if (col == n - 1) {
++row;
}
else if (row == 0) {
++col;
}
else {
--row;
++col;
}
}
else {
if (row == m - 1) {
++col;
}
else if (col == 0) {
++row;
}
else {
++row;
--col;
}
}
}
return res;
}
}
3. Time & Space Complexity