题解 | #螺旋矩阵#
螺旋矩阵
https://www.nowcoder.com/practice/7edf70f2d29c4b599693dc3aaeea1d31
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> spiralOrder(int[][] matrix) {
ArrayList<Integer> res = new ArrayList<>();
if (matrix == null || matrix.length < 1 || matrix[0] == null ||
matrix[0].length < 1) {
return res;
}
int n = matrix.length;
int m = matrix[0].length;
int li = 0;
int lj = 0;
int ri = n - 1;
int rj = m - 1;
while (li <= ri && lj <= rj) {
if (li == ri) {
// 从左往右
for (int k = lj; k <= rj; k++) {
res.add(matrix[li][k]);
}
} else if (lj == rj) {
// 从下往上
for (int k = li; k <= ri; k++) {
res.add(matrix[k][rj]);
}
} else {
// 从左往右
for (int k = lj; k <= rj; k++) {
res.add(matrix[li][k]);
}
// 从下往上
for (int k = li + 1; k <= ri; k++) {
res.add(matrix[k][rj]);
}
// 从右往左
for (int k = rj - 1; k >= lj; k--) {
res.add(matrix[ri][k]);
}
// 从上往下
for (int k = ri - 1; k > li; k--) {
res.add(matrix[k][lj]);
}
}
li++;
lj++;
ri--;
rj--;
}
return res;
}
}
