59. Spiral Matrix II

Leetcode

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

題目

Given a positive integer n, generate an n x n matrix filled with elements from 1 to n2 in spiral order.

解答

  • 方法一

如同 54. Spiral Matrix,設定四個方向(往右 -> 往下 -> 往左 -> 往上),依序遍歷

var generateMatrix = function(n) {
    let startRow = 0;
    let startCol = 0;
    let endRow = n - 1;
    let endCol = n - 1;
    
    const result = Array.from({length: n}, () => Array(n));
    let number = 1;
    while(true) {
      for(let i=startCol; i<=endCol; i++) {
          result[startRow][i] = number++;
      }
      startRow++;
      if (number > n**2) break;
      
      for(let i=startRow; i<=endRow; i++) {
          result[i][endCol] = number++;
      }
      endCol--;
      if (number > n**2) break;
      
      for(let i=endCol; i>=startCol; i--) {
          result[endRow][i] = number++;
      }
      endRow--;
      if (number > n**2) break;
      
      for(let i=endRow; i>=startRow; i--) {
          result[i][startCol] = number++;
      }
      startCol++;
      if (number > n**2) break;
    }
    return result;
};

Runtime: 72 ms, faster than 78.29% of JavaScript online submissions for Spiral Matrix II.

Memory Usage: 39 MB, less than 32.56% of JavaScript online submissions for Spiral Matrix II.

測資

let n = 1;
n = 3;

console.log(generateMatrix(n));

Last updated

Was this helpful?