import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> spiralOrder(int[][] matrix) {
ArrayList<Integer> res = new ArrayList<Integer>();
if(matrix.length == 0)
return res;
int m = matrix.length;
int n = matrix[0].length;
//设置上下左右边界
int left = 0,right = n-1,up = 0,down = m-1;
while(left <= right && up <= down){
//上方从左到右
for(int i = left;i<=right;i++){
res.add(matrix[up][i]);
}
up++;
//右侧从上到下
if(up>down)
break;
for(int i = up;i <= down;i++){
res.add(matrix[i][right]);
}
right--;
//底部从右到左
if(left > right)
break;
for(int i = right; i >= left;i--){
res.add(matrix[down][i]);
}
down--;
//左侧从下到上
if(up > down)
break;
for(int i = down; i >= up; i--){
res.add(matrix[i][left]);
}
left++;
if(left>right)
break;
}
return res;
}
}