import java.util.*; public class Solution { public ArrayList<Integer> spiralOrder(int[][] matrix) { ArrayList<Integer> res = new ArrayList<>(); if(matrix == null || matrix.length == 0 || matrix[0].length == 0){ return res; } int m = matrix.length, n = matrix[0].length; int index = 0; int l = 0 , r = n - 1, t = 0 , b = m - 1; while(l <= r && t <= b){ // 123 69 87 4 : 分成四次操作遍历一圈 for(int i = l ; i <= r ; i++){ res.add(matrix[t][i]); } for(int i = t+1 ; i <= b ; ++i){ res.add(matrix[i][r]); } if(l < r && t < b){ //注意 例如3x5矩阵 遍历第二行 t=b不可继续 for(int i = r-1 ; i >= l ; i--){ res.add(matrix[b][i]); } for(int i = b-1 ; i > t ; --i){ res.add(matrix[i][l]); } } t++;r--;b--;l++; } return res; } }