package Java;
import java.util.ArrayList;
import java.util.List;
public class SpiralMatrix {
public List spiralOrder(int[][] matrix) {
if (matrix.length == 0 || matrix[0].length == 0) return new ArrayList();
int i1 = 0;
int i2 = matrix.length - 1;
int j1 = 0;
int j2 = matrix[0].length - 1;
List result = new ArrayList<>();
while (i1 <= i2 && j1 <= j2) {
for (int j = j1; j <= j2; j++) {
result.add(matrix[i1][j]);
}
for (int i = i1 + 1; i <= i2; i++) {
result.add(matrix[i][j2]);
}
if (i1 < i2 && j1 < j2) {
for (int j = j2 - 1; j > j1; j--) {
result.add(matrix[i2][j]);
}
for (int i = i2; i > i1; i--) {
result.add(matrix[i][j1]);
}
}
i1++;
j1++;
i2--;
j2--;
}
return result;
}
}