题目地址:链接
题目描述: 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
示例输出:
示例 1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
dfs
思路: 使用dfs模拟一遍即可
js中创建二维数组,使用 Array.from({length: n}, () => Array(m).fill(0))
var spiralOrder = function(matrix) {
dx = [0, 1, 0, -1];
dy = [1, 0, -1, 0];
function dfs(x, y, dir) {
if(res.length >= n * m) return;
for(let i = x, j = y; i < n && y < m;) {
if(isRead[i][j] == 0) {
isRead[i][j] = 1;
res.push(matrix[i][j]);
[newi, newj] = [dx[dir] + i, dy[dir] + j];
if(newi < 0 || newi >= n || newj < 0 || newj >= m || isRead[newi][newj] != 0) {
let d = (dir + 1) % 4;
dfs(dx[d] + i, dy[d] + j, d);
return;
}
[i, j] = [dx[dir] + i, dy[dir] + j];
} else {
let d = (dir + 1) % 4;
dfs(dx[d] + i, dy[d] + j, d);
return;
}
}
}
let res = [];
let [n, m] = [matrix.length, matrix[0].length];
const isRead = Array.from({length: n}, () => Array(m).fill(0));
dfs(0, 0, 0);
return res;
};
8万+

被折叠的 条评论
为什么被折叠?



