每天一道leetcode(Day 55)


59. 螺旋矩阵 II

题目描述

给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。

示例

输入: 3
输出:
[
 [ 1, 2, 3 ],
 [ 8, 9, 4 ],
 [ 7, 6, 5 ]
]

解题思路

思路:层模拟
类似题目:54. 螺旋矩阵

代码

/**
 * @param {number} n
 * @return {number[][]}
 */
var generateMatrix = function (n) {
  let matrix = new Array(),
    colStart = 0,
    colEnd = n - 1,
    rowStart = 0,
    rowEnd = n - 1,
    num = 1,
    tar = n * n;
  for (let i = 0; i < n; i++) matrix[i] = new Array();
  while (num <= tar) {
    for (let i = colStart; i <= colEnd; i++) matrix[rowStart][i] = num++; // colStart to colEnd.
    rowStart++;
    for (let i = rowStart; i <= rowEnd; i++) matrix[i][colEnd] = num++; // rowStart to rowEnd.
    colEnd--;
    for (let i = colEnd; i >= colStart; i--) matrix[rowEnd][i] = num++; // colEnd to colStart.
    rowEnd--;
    for (let i = rowEnd; i >= rowStart; i--) matrix[i][colStart] = num++; // rowEnd to rowStart.
    colStart++;
  }
  return matrix;
};

参考

59. 螺旋矩阵 II


文章作者: CassielLee
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 CassielLee !
评论
  目录