LeetCode - 498. Diagonal Traverse
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.
Example:
Input: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] Output: [1,2,4,7,5,3,6,8,9] Explanation:
Note:
- The total number of elements of the given matrix will not exceed 10,000.
class Solution { public int[] findDiagonalOrder(int[][] matrix) { boolean up = true; if (matrix.length == 0) return new int[0]; int[] res = new int[matrix.length * matrix[0].length]; int i = 0; int j = 0; for (int k = 0; k < matrix.length * matrix[0].length; k++) { res[k] = matrix[i][j]; if (up) { if ((i-1) >= 0 && (j+1) < matrix[0].length) { i--; j++; } else if ((j+1) < matrix[0].length) { j++; up = false; } else if ((i+1) < matrix.length) { i++; up = false; } else break; } else { if ((i+1) < matrix.length && (j-1) >= 0) { i++; j--; } else if ((i+1) < matrix.length) { i++; up = true; } else if ((j+1) < matrix[0].length) { j++; up = true; } else break; } } return res; } }
作者:Pickle
声明:对于转载分享我是没有意见的,出于对博客园社区和作者的尊重一定要保留原文地址哈。
致读者:坚持写博客不容易,写高质量博客更难,我也在不断的学习和进步,希望和所有同路人一道用技术来改变生活。觉得有点用就点个赞哈。