第12天
54. 螺旋矩阵
难度中等822
给你一个 m
行 n
列的矩阵 matrix
,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
示例 1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
示例 2:
输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]
方向数组
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
int[] dx = new int[]{0,1,0,-1};
int[] dy = new int[]{1,0,-1,0};
List<Integer> res = new ArrayList<Integer>();
int x = 0,y = 0;
int n = matrix.length,m = matrix[0].length;
int t = 0;
boolean[][] use = new boolean[n][m];
for(int i = 0;i<m*n;i++){
int a = x,b = y;
res.add(matrix[a][b]);
use[a][b] = true;
a = x + dx[t];
b = y + dy[t];
if(a<0||b<0||b>=m||a>=n||use[a][b]==true){
t = (t+1)%4;
a = x + dx[t];
b = y + dy[t];
}
x = a;
y = b;
}
return res;
}
}