class Solution { public List<Integer> spiralOrder(int[][] matrix) { List<Integer> order = new ArrayList<Integer>(); if(matrix == null || matrix.length == 0 || matrix[0].length == 0){ return order; } int rows = matrix.length; int colums = matrix[0].length; int left = 0, right = colums-1,top = 0 , bottom = rows-1; while(left<=right && top <= bottom ){ for (int column = left; column <= right;column++){ order.add(matrix[top][column]); } for(int row = top+1; row<=bottom; row++){ order.add(matrix[row][right]); } // 检查是否需要继续遍历,如果当前区域不是一个行或列,则执行内部的遍历。 if(left<right && top<bottom){ // 从右到左遍历当前下边界,将元素添加到列表中 for(int column = right-1 ; column>left ; column--){ order.add(matrix[bottom][column]); } for(int row = bottom; row>top; row--){ order.add(matrix[row][left]); } } // 更新边界值,缩小遍历区域。 left++; right--; top++; bottom--; } // 返回按照螺旋顺序遍历矩阵后得到的整数列表 return order; } }