class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
int m = matrix.length;
int n = matrix[0].length;
boolean[][] mark = new boolean[m][n];
List<Integer> res = new ArrayList<>();
int i = 0, j = 0;
while(res.size() < m*n) {
while(j < n && mark[i][i] == false) {
res.add(matrix[i][j]);
mark[i][j] = true;
j++;
}
j--;
while(i < m && mark[i][j] == false) {
res.add(matrix[i][j]);
mark[i][j] = true;
i++;
}
i--;
while(j >= 0 && mark[i][j] == false) {
res.add(matrix[i][j]);
mark[i][j] = true;
j--;
}
j++;
while(i >= 0 && mark[i][j] == false) {
res.add(matrix[i][j]);
mark[i][j] = true;
i--;
}
i++;
}
return res;
}
}
Leetcode 54. 螺旋矩阵
为什么数组会下标越界?