import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param matrix int整型二维数组
* @return int整型ArrayList
*/
public ArrayList<Integer> spiralOrder (int[][] matrix) {
// write code here
if (matrix == null || matrix.length == 0) {
return new ArrayList<>();
}
int left = 0;
int right = matrix[0].length - 1;
int up = 0;
int down = matrix.length - 1;
bl( matrix, left, right, up, down);
return list;
}
ArrayList<Integer> list = new ArrayList<>();
private void bl(int[][] matrix, int left, int right, int up, int down) {
if (left > right || up > down) {
return;
}
// 单独处理一行
if (up == down) {
for (int i = left; i <= right; i++) {
list.add(matrix[up][i]);
}
return;
}
// 单独处理一列
if (left == right) {
for (int i = up; i <= down; i++) {
list.add(matrix[i][left]);
}
return;
}
// 从左到右边
for (int i = left; i <= right; i++) {
list.add(matrix[up][i]);
}
// 从上到下边
for (int i = up + 1; i <= down; i++) {
list.add(matrix[i][right]);
}
// 从右下到左下边
for (int i = right - 1; i >= left; i--) {
list.add(matrix[down][i]);
}
// 从左下到左上边
for (int i = down - 1; i > up; i--) {
list.add(matrix[i][left]);
}
bl(matrix, left + 1, right - 1, up + 1, down - 1);
}
}