import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param matrix int整型二维数组
* @return int整型ArrayList
*/
public ArrayList<Integer> spiralOrder (int[][] matrix) {
// write code here
// 定一个结果集
ArrayList<Integer> result = new ArrayList<>();
if (matrix == null || matrix.length == 0) {
return result;
}
// 获取行
int row = matrix.length;
// 获取列
int col = matrix[0].length;
// 上边界
int up = 0;
// 下边界
int down = row - 1;
// 左边界
int left = 0;
// 有边界
int right = col - 1;
while ( left <= right && up <= down) {
// 从左到右
for (int i = left; i <= right; i ++) {
// 从左到右
result.add(matrix[up][i]);
}
// 上边界值加一
up++;
// 判断上边界值是否大于下边界值
if (up > down) {
break;
}
// 从上到下
for (int j = up; j <= down; j ++) {
result.add(matrix[j][right]);
}
right --;
// 判断左边界值是否大于右边界值
if (left > right) {
break;
}
// 从右到左
for (int k = right; k >= left ; k --) {
result.add(matrix[down][k]);
}
down --;
if (up > down) {
break;
}
// 从下到上
for (int n = down; n >= up; n --) {
result.add(matrix[n][left]);
}
left ++;
if (left > right) {
break;
}
}
return result;
}
}