import java.util.ArrayList;
import java.util.List;
/**
* @author xienl
* @description 螺旋矩阵
* @date 2022/7/6
*/
public class Solution {
public static void main(String[] args) {
Solution solution = new Solution();
}
public ArrayList<Integer> spiralOrder(int[][] matrix) {
if (matrix.length == 0){
return new ArrayList<>();
}
int m = matrix.length, n = matrix[0].length;
int[][] directions = {{0, 1}, {1,0},{-1, 0}, {0, -1}};
int direction = 0;
int row = 0;
int col = 0;
ArrayList<Integer> list = new ArrayList<>();
boolean[][] visited = new boolean[m][n];
for (int i = 0; i < m * n; i++){
list.add(matrix[row][col]);
visited[row][col] = true;
int nextRow = row + directions[direction][0];
int nextCol = col + directions[direction][1];
if (nextCol < 0 || nextRow >= m || nextCol >= n || visited[nextRow][nextCol]){
direction = (direction + 1) % 4;
}
row = row + directions[direction][0];
col = col + directions[direction][1];
}
return list;
}
}