描述
给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。
示例1
输入:
[[1,2,3],[4,5,6],[7,8,9]]
返回值:
[1,2,3,6,9,8,7,4,5]
import java.util.*;
public class Solution {
ArrayList<Integer> list = new ArrayList<Integer>();
public ArrayList<Integer> spiralOrder(int[][] matrix) {
if (matrix.length == 0) {
return list;
}
int tR = 0, tC = 0;
int dR = matrix.length - 1;
int dC = matrix[0].length - 1;
while (tR <= dR && tC <= dC) {
printEdge(matrix, tR++, tC++, dR--, dC--);
}
return list;
}
// 定义一个打印每一圈的函数
public void printEdge(int[][] matrix, int tR, int tC, int dR, int dC) {
// 若只有一行
if (tR == dR) {
while (tC <= dC)
list.add(matrix[tR][tC++]);
} else if (tC == dC) { // 若只有一列
while (tR <= dR)
list.add(matrix[tR++][tC]);
} else { // 正常
int curC = tC;
int curR = tR;
while (curC != dC) {
list.add(matrix[tR][curC++]);
}
while (curR != dR) {
list.add(matrix[curR++][dC]);
}
while (curC != tC) {
list.add(matrix[dR][curC--]);
}
while (curR != tR) {
list.add(matrix[curR--][tC]);
}
}
}
}