题目:
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.
For example,
Given the following matrix:
[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ]
You should return [1,2,3,6,9,8,7,4,5].
public class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
if(null==matrix||matrix.length<=0) return new ArrayList<Integer>();
int x1=0,y1=0;
int x2=matrix.length-1,y2=matrix[matrix.length-1].length-1;
List<Integer> ret = new ArrayList<Integer>();
while(x1<=x2&&y1<=y2){
for(int i=x1,j=y1;j<=y2;j++) ret.add(matrix[i][j]); // left to right
for(int i=x1+1,j=y2;i<=x2;i++) ret.add(matrix[i][j]); // right up to right down
for(int i=x2,j=y2-1;i>x1&&j>=y1;j--) ret.add(matrix[i][j]); // right to left
for(int i=x2-1,j=y1;i>x1&&j<y2;i--) ret.add(matrix[i][j]); // left down to left up
x1++;y1++;
x2--;y2--;
}
return ret;
}
}
参考:
本文介绍了一种矩阵元素螺旋遍历的方法,并提供了一个具体的Java实现案例。对于m x n的矩阵,该方法能按螺旋顺序返回所有元素。示例中给出了一个3x3矩阵的螺旋遍历结果。
1892

被折叠的 条评论
为什么被折叠?



