54 螺旋矩陣
阿新 • • 發佈:2018-12-10
解題思路,每一層都是這個順序(紅綠藍紫)
class Solution { public List < Integer > spiralOrder(int[][] matrix) { List ans = new ArrayList(); //儲存結果 if (matrix.length == 0) return ans; int r1 = 0, r2 = matrix.length - 1; //行數 int c1 = 0, c2 = matrix[0].length - 1; //列數 while (r1 <= r2 && c1 <= c2) { for (int c = c1; c <= c2; c++) { ans.add(matrix[r1][c]); //將上面的行,向右,加入 } for (int r = r1 + 1; r <= r2; r++) { ans.add(matrix[r][c2]); //將右邊的列,向下,加入 } if (r1 < r2 && c1 < c2) { for (int c = c2 - 1; c > c1; c--) ans.add(matrix[r2][c]); //將下面的行,向左順序,加入 for (int r = r2; r > r1; r--) ans.add(matrix[r][c1]); //將左邊的列,向行順序,加入 } //進入第次內層 r1++; r2--; c1++; c2--; } return ans; } }