题目:54. 螺旋矩阵
思路:模拟矩阵旋转。
代码:
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
List<Integer> res = new ArrayList<>();
if (matrix.length ==0) {
return res;
}
int minRow = 0;
int maxRow = matrix.length - 1;
int minCol = 0;
int maxCol = matrix[0].length - 1;
int num = matrix.length * matrix[0].length;
while (num > 0) {
// left2right
for (int i = minCol; i <= maxCol; i ++) {
res.add(matrix[minRow][i]);
num --;
}
minRow ++;
// up2down
if (num > 0) {
for (int i = minRow; i <= maxRow; i ++) {
res.add(matrix[i][maxCol]);
num --;
}
maxCol --;
}
// right2left
if (num > 0) {
for (int i = maxCol; i >= minCol ; i --) {
res.add(matrix[maxRow][i]);
num --;
}
maxRow --;
}
// down2up
if (num > 0) {
for (int i = maxRow; i >= minRow; i --) {
res.add(matrix[i][minCol]);
num --;
}
minCol ++;
}
}
return res;
}
}