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);
  }
}