输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
示例 1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
示例 2:
输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]
限制:
0 <= matrix.length <= 100
0 <= matrix[i].length <= 100
class Solution {
public int[] spiralOrder(int[][] matrix) {
if(matrix==null||matrix.length==0||matrix[0].length==0){
return new int[0];
}
int[] ans=new int[matrix.length*matrix[0].length];
int cnt=0;
int rs=0,re=matrix.length-1;
int cs=0,ce=matrix[0].length-1;
while(rs<re&&cs<ce){
for(int i=cs;i<ce;i++){
ans[cnt++]=matrix[rs][i];
}
for(int i=rs;i<re;i++){
ans[cnt++]=matrix[i][ce];
}
for(int i=ce;i>cs;i--){
ans[cnt++]=matrix[re][i];
}
for(int i=re;i>rs;i--){
ans[cnt++]=matrix[i][cs];
}
rs++;
re--;
cs++;
ce--;
}
if(rs==re){
for(int i=cs;i<=ce;i++){
ans[cnt++]=matrix[rs][i];
}
}
else if(cs==ce){
for(int i=rs;i<=re;i++){
ans[cnt++]=matrix[i][cs];
}
}
return ans;
}
}