leetcode

我的 leetcode 题解(JavaScript)


思路很简单, 也比较基础, 但是写起来有一点点麻烦

也有简略的版本, 不过思路也是这个思路, 代码可读性差

const spiralOrder = function (matrix) {
  let width = matrix[0].length - 1, height = matrix.length - 1;
  let m = 0, n = 0;
  const res = [];
  while (m <= width && n <= height) {
    for (let i = m; i <= width; i++) {
      res.push(matrix[n][i]);
    }
    ++n;
    for (let i = n; i <= height; i++) {
      res.push(matrix[i][width]);
    }
    --width;
    if (n <= height) {
      for (let i = width; i >= m; i--) {
        res.push(matrix[height][i]);
      }
    }

    --height;
    if (m <= width) {
      for (let i = height; i >= n; i--) {
        res.push(matrix[i][m]);
      }
    }
    ++m;
  }
  return res;
};