class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
int m = matrix.length, n = matrix[0].length, mn = m * n;
int startX = 0, startY = 0, endX = m - 1, endY = n - 1;
List<Integer> result = new ArrayList<>(mn);
while (true) {
for (int i = startY; i <= endY; i++) {
result.add(matrix[startX][i]);
}
if (result.size() >= mn) {
break;
}
for (int i = startX + 1; i <= endX - 1; i++) {
result.add(matrix[i][endY]);
}
for (int i = endY; i >= startY; i--) {
result.add(matrix[endX][i]);
}
if (result.size() >= mn) {
break;
}
for (int i = endX - 1; i >= startX + 1; i--) {
result.add(matrix[i][startY]);
}
if (result.size() >= mn) {
break;
}
startX++;
startY++;
endX--;
endY--;
}
return result;
}
}
54. 螺旋矩阵
最新推荐文章于 2024-09-14 17:47:00 发布