目录
顺时针打印矩阵
描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
示例 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 row=matrix.length;
int column=matrix[0].length;
int[] res=new int[row*column];
int index=0;
int left=0,right=column-1;
int top=0,bottom=row-1;
while(true){
//向右打印
for (int i = left; i <= right; i++) {
res[index++]=matrix[top][i];
}
if (++top>bottom){
break;
}
//向下打印
for (int j = top; j <= bottom; j++) {
res[index++]=matrix[j][right];
}
if (--right<left){
break;
}
//向左打印
for (int i = right; i >= left; i--) {
res[index++]=matrix[bottom][i];
}
if (--bottom<top){
break;
}
//向上打印
for (int j = bottom; j >= top; j--) {
res[index++]=matrix[j][left];
}
if (++left>right){
break;
}
}
return res;
}
}