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;
}
}