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]
.
题目:这是关于旋转矩阵的问题,把矩阵的元素元转输出到list。
思路:限制4个角,按照最外层一行一列输出。思路是这样,但是有些条件没考虑到,是在测试的时候才补充上。
public List<Integer> spiralOrder(int[][] matrix) {
List<Integer> list = new ArrayList<Integer>();
if(matrix.length == 0) {
return list;
}
int rowMin = 0;
int rowMax = matrix.length-1;
int colMin = 0;
int colMax = matrix[0].length-1;
while(rowMax >= rowMin && colMax >= colMin){
for(int i = colMin; i <= colMax;i++) {
list.add(matrix[rowMin][i]);
}
rowMin++;
for(int i = rowMin;i<= rowMax;i++) {
list.add(matrix[i][colMax]);
}
colMax--;
for(int i = colMax;i >= colMin && rowMax >= rowMin;i--){
list.add(matrix[rowMax][i]);
}
rowMax--;
for(int i = rowMax;i>=rowMin && colMax >= colMin;i--){
list.add(matrix[i][colMin]);
}
colMin++;
}
return list;
}