题目
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
示例 1:
输入: matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出: [1,2,3,6,9,8,7,4,5]
题解
方式一:模拟
public List<Integer> spiralOrder(int[][] matrix) {
int m = matrix.length;
int n = matrix[0].length;
boolean[][] visit = new boolean[m][n];
List<Integer> result = new ArrayList<>();
int i = 0;
int j = 0;
while(result.size() < m * n) {
while (j < n && !visit[i][j] && result.size() < m * n) {
visit[i][j] = true;
result.add(matrix[i][j++]);
}
i++;
j--;
while (i < m && !visit[i][j] && result.size() < m * n) {
visit[i][j] = true;
result.add(matrix[i++][j]);
}
i--;
j--;
while (j >= 0 && !visit[i][j] && result.size() < m * n) {
visit[i][j] = true;
result.add(matrix[i][j--]);
}
i--;
j++;
while (i >= 0 && !visit[i][j] && result.size() < m * n) {
visit[i][j] = true;
result.add(matrix[i--][j]);
}
i++;
j++;
}
return result;
}
总结
算法:模拟