Matrix Zigzag Traversal
题目:
这道题就是用一个方法设置4个边界来loop。
代码:
Given a matrix of m x n elements (m rows, n columns),
return all elements of the matrix in ZigZag-order.
Example
Given a matrix:
[
[1, 2, 3, 4],
[5, 6, 7, 8],
[9,10, 11, 12]
]
return [1, 2, 5, 9, 6, 3, 4, 7, 10, 11, 8, 12]
解题思路:这道题就是用一个方法设置4个边界来loop。
代码:
public int[] printZMatrix(int[][] matrix) { if (matrix == null || matrix.length == 0) return null; int m = matrix.length - 1, n = matrix[0].length - 1; int[] result = new int[(m + 1) * (n + 1)]; int index = 0; for (int i = 0; i <= m + n; i++) { int upperBoundx = Math.min(i, m); // x <= mint lowerBoundx = Math.max(0, i - n); // lower bound i - x(y) <= nint upperBoundy = Math.min(i, n); // y <= nint lowerBoundy = Math.max(0, i - m); // i - y(x) <= mif (i % 2 == 0) { // column incrementfor (int y = lowerBoundy; y <= upperBoundy; y++) { result[index] = matrix[i - y][y]; index++; } } else { // row incrementfor (int x = lowerBoundx; x <= upperBoundx; x++) { result[index] = matrix[x][i - x]; index++; } } } return result; }

Comments
Post a Comment