输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
示例 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]
就按照顺序打印
class Solution {
public int[] spiralOrder(int[][] matrix) {
int row = matrix.length;
if (row == 0) {
return new int[0];
}
int[] res = new int[matrix.length*matrix[0].length];
int index = 0;
int tR = 0;
int tC = 0;
int dR = matrix.length-1;
int dC = matrix[0].length-1;
//开始
while(true) {
// 从左往右
for(int i=tC;i<=dC;i++) {
res[index++] = matrix[tR][i];
}
if(++tR>dR) {
break;
}
// 从上至下
for(int i=tR;i<=dR;i++) {
res[index++] = matrix[i][dC];
}
if(--dC<tC) {
break;
}
// 从右到左
for(int i=dC;i>=tC;i--) {
res[index++] = matrix[dR][i];
}
if(--dR<tR) {
break;
}
//从下只上
for(int i=dR;i>=tR;i--) {
res[index++] = matrix[i][tC];
}
// 再次判断
if(++tC>dC) {
break;
}
}
return res;
}
}