leetcode 54. 螺旋矩阵-java实现
题目所属分类
螺旋矩阵 这题对做dfs等题 有基础意义
原题链接
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
代码案例:
题解
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
List<Integer> res = new ArrayList<>();
int n = matrix.length;
if(n == 0 ) return res ;
int m = matrix[0].length ;
//判定是否走过
boolean[][] st = new boolean[n][m];
//右下左上
int dx[] = {0, 1, 0, -1}, dy[] = {1, 0, -1, 0};
//左上角的位置是x,y = 0,方向b=0
for(int i = 0 , x = 0 , y = 0 ,d=0 ; i < n *m ; i ++) {
res.add(matrix[x][y]);
st[x][y] = true ;
int a = x + dx[d];
int b = y + dy[d];
if(a < 0 || a >= n || b < 0 || b >= m || st[a][b]) {//出界了
d = (d+1) % 4;
a = x + dx[d];
b = y + dy[d];
}
x = a;
y = b ;
}
return res ;
}
}


浙公网安备 33010602011771号