一层一层遍历,每一层顺时针遍历四边
class Solution {
public int[] spiralOrder(int[][] matrix) {
int m = matrix.length;
if(m == 0) return new int[]{};
int n = matrix[0].length;
if(n == 0) return matrix[0];
int dp = 0;
int path = 0;
int number = m * n;
int[] end = new int[number];
while(path < number){
if(dp + 1 == m){
for(int i = dp; i < n; i ++){
end[path++] = matrix[dp][i];
}
return end;
}else if(dp + 1 == n){
for(int i = dp; i < m ; i ++){
end[path++] = matrix[i][n - 1];
}
return end;
}
for(int i = dp; i < n - 1; i ++){
end[path++] = matrix[dp][i];
}
for(int i = dp; i < m - 1; i ++){
end[path++] = matrix[i][n - 1];
}
for(int i = n - 1; i > dp; i --){
end[path++] = matrix[m - 1][i];
}
for(int i = m - 1; i > dp; i--){
end[path++] = matrix[i][dp];
}
dp++;
m--;
n--;
}
return end;
}
}