LCR146.螺旋遍历二维数组
链接:LCR146.螺旋遍历二维数组
难度:Easy
标签:数组、矩阵、模拟
简介:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
题解 1 - typescript
- 编辑时间:2020-06-05
- 执行用时:96ms
- 内存消耗:39.6MB
- 编程语言:typescript
- 解法介绍:递归判断每一圈
function spiralOrder(matrix: number[][]): number[] {
const row = matrix.length;
if (row === 0) return [];
else if (row === 1) return matrix[0];
const ans: number[] = [];
const col = matrix[0].length;
spiral(0, row - 1, 0, col - 1);
return ans;
function spiral(startI: number, endI: number, startJ: number, endJ: number): void {
if (endI < startI || endJ < startJ) return;
for (let i = startJ; i <= endJ; i++) ans.push(matrix[startI][i]);
for (let i = startI + 1; i <= endI; i++) ans.push(matrix[i][endJ]);
for (let i = endJ - 1; startI !== endI && i >= startJ; i--) ans.push(matrix[endI][i]);
for (let i = endI - 1; startJ !== endJ && i >= startI + 1; i--) ans.push(matrix[i][startJ]);
if (startI !== endI && startJ !== endJ) spiral(startI + 1, endI - 1, startJ + 1, endJ - 1);
}
}