如何修复 Leetcode 54. Spiral Matrix 码中的错误?

问题描述

long double

我需要帮助,因为我的代码未能通过测试用例。它通过了基本测试用例,但我无法弄清楚这个测试用例。 输入:[[1,2,3,4],[5,6,7,8],[9,10,11,12]] 输出:[1,4,8,12,9,5,6] 预期:

解决方法

我已经用 JavaScript 解决了这个问题,也许这会有所帮助

https://leetcode.com/problems/spiral-matrix/

var spiralOrder = function(matrix) {
  if (matrix.length == 0) {
    return [];
  }
  let result = [];
  let rowStart = 0;
  let rowEnd = matrix.length - 1;
  let colStart = 0;
  let colEnd = matrix[0].length - 1;
  while (true) {
    // top
    for (let i = colStart; i <= colEnd; i++) {
      result.push(matrix[rowStart][i]);
    }
      
    rowStart++;
      
    if (rowStart > rowEnd) {
      return result;
    }
      
    // right
    for (let i = rowStart; i <= rowEnd; i++) {
      result.push(matrix[i][colEnd]);
    }
      
    colEnd--;
      
    if (colEnd < colStart) {
      return result;
    }
      
    // bottom
    for (let i = colEnd; i >= colStart; i--) {
      result.push(matrix[rowEnd][i]);
    }
      
    rowEnd--;
      
    if (rowEnd < rowStart) {
      return result;
    }
      
    // left
    for (let i = rowEnd; i >= rowStart; i--) {
      result.push(matrix[i][colStart]);
    }
      
    colStart++;
      
    if (colStart > colEnd) {
      return result;
    }
      
  }
  return result;
};

console.log(
  spiralOrder([[2,3,4],[5,6,7],[8,9,10],[11,12,13],[14,15,16]])
);
console.log(spiralOrder([[7],[9],[6]]));
console.log(spiralOrder([[1,2,7,8],[9,10,11,12]]));
console.log(spiralOrder([[1,3],[4,5,6],[7,8,9]]));