代码语言:javascript复制
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
代码语言:javascript复制输入: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]
代码语言:javascript复制解法: 简单分为四个循环 ,把他放在大循环中 , 左到右 上到下 右到左 下到上 .....左到右 上到下......下到上.....
再循环后 使t (l r-- b--) 这样就可以满足i<=b.... 里面的等于了
class Solution {
public int[] spiralOrder(int[][] matrix) {
if(matrix==null||matrix.length==0){
return new int[0];
}
int l =0,r=matrix[0].length-1,t=0,b=matrix.length-1;
int total=(r 1)*(b 1);
int [] res=new int[total];
int flag=0;
while(true){
//从左到右
for(int i=l;i<=r&&flag<total;i ){
res[flag]=matrix[t][i];
flag ;
}
if(t >b)break;
//从上到下
for(int i=t;i<=b&&flag<total;i ){
res[flag]=matrix[i][r];
flag ;
}
if(r--<l)break;
//从右到左
for(int i=r;i>=l&&flag<total;i--){
res[flag]=matrix[b][i];
flag ;
}
if(b--<t)break;
//从下到上
for(int i=b;i>=t&&flag<total;i--){
res[flag]=matrix[i][l];
flag ;
}
if(l >r)break;
}
return res;
}
}