Spiral Matrix
给一个2d数组, 返回一个数组, 是这个数组的sprial遍历. 就是顺时针的转. 这个题就是做慢点..
public class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
List<Integer> res = new ArrayList<Integer>();
if(matrix == null ||matrix.length == 0)
return res;
int m = matrix.length;
int n = matrix[0].length;
int x = 0;
int y = 0;
while(m > 0 && n > 0) {
if(m == 1){
for(int i = 0 ; i < n; i++)
res.add(matrix[x][y++]);
break;
}
if(n == 1){
for(int i = 0; i < m; i++)
res.add(matrix[x++][y]);
break;
}
for(int i = 0 ; i < n-1; i++)
res.add(matrix[x][y++]);
for(int i = 0; i < m-1; i++)
res.add(matrix[x++][y]);
for(int i = 0; i < n-1; i++)
res.add(matrix[x][y--]);
for(int i = 0; i < m-1; i++)
res.add(matrix[x--][y]);
x++;
y++;
m-=2;
n-=2;
}
return res;
}
}