import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param matrix int整型二维数组 * @return int整型ArrayList */ public ArrayList<Integer> spiralOrder (int[][] matrix) { // write code here if (matrix == null || matrix.length == 0) { return new ArrayList<>(); } int left = 0; int right = matrix[0].length - 1; int up = 0; int down = matrix.length - 1; bl( matrix, left, right, up, down); return list; } ArrayList<Integer> list = new ArrayList<>(); private void bl(int[][] matrix, int left, int right, int up, int down) { if (left > right || up > down) { return; } // 单独处理一行 if (up == down) { for (int i = left; i <= right; i++) { list.add(matrix[up][i]); } return; } // 单独处理一列 if (left == right) { for (int i = up; i <= down; i++) { list.add(matrix[i][left]); } return; } // 从左到右边 for (int i = left; i <= right; i++) { list.add(matrix[up][i]); } // 从上到下边 for (int i = up + 1; i <= down; i++) { list.add(matrix[i][right]); } // 从右下到左下边 for (int i = right - 1; i >= left; i--) { list.add(matrix[down][i]); } // 从左下到左上边 for (int i = down - 1; i > up; i--) { list.add(matrix[i][left]); } bl(matrix, left + 1, right - 1, up + 1, down - 1); } }