054.Spiral Matrix Posted on 2017-09-13 | In LeetCode ##Solution 2: accepted 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647public static List<Integer> spiralOrder(int[][] matrix) { List<Integer> result = new ArrayList<>(); int m = matrix.length;// rows if (m == 0) { return result; } int n = matrix[0].length;// columns int topOffset = 0; int rightOffset = 0; int bottomOffset = 0; int leftOffset = 0; while (true) { // top for (int i = leftOffset; i < n - rightOffset; i++) { result.add(matrix[topOffset][i]); } topOffset++; if (topOffset + bottomOffset == m) { break; } // right for (int i = topOffset; i < m - bottomOffset; i++) { result.add(matrix[i][n - 1 - rightOffset]); } rightOffset++; if (leftOffset + rightOffset == n) { break; } // bottom for (int i = n - 1 - rightOffset; i >= leftOffset; i--) { result.add(matrix[m - 1 - bottomOffset][i]); } bottomOffset++; if (topOffset + bottomOffset == m) { break; } // left for (int i = m - 1 - bottomOffset; i >= topOffset; i--) { result.add(matrix[i][leftOffset]); } leftOffset++; if (leftOffset + rightOffset == n) { break; } } return result; }