解题思路:
如题写出遍历循环即可,每次遍历完每个边界做相应移动,左上角为upper, 右上角为right,左下角为left, 右下角为lower
class Solution {
public List spiralOrder(int[][] matrix) {
int n = matrix[0].length, m = matrix.length; //n为第一行列数, m为行数
int upper = 0, left = 0, lower = m - 1, right = n - 1;
List res = new linkedList<>();
while(res.size() < m * n){
//从左到右
if(upper <= lower){
for(int i = left; i <= right; i++){
res.add(matrix[upper][i]);
}
upper++;//上边界下移
}
//从上到下
if(left <= right){
for(int j = upper; j <= lower; j++){
res.add(matrix[j][right]);
}
right--;//右边界左移
}
//从右到左
if(upper <= lower){
for (int i = right; i >= left; i--){
res.add(matrix[lower][i]);
}
lower--;//下边界上移
}
//从下到上
if(left <= right){
for(int j = lower; j >= upper; j--){
res.add(matrix[j][left]);
}
left++;//左边界右移
}
}
return res;
}
}



