0
点赞
收藏
分享

微信扫一扫

leetcode 59 - Spiral Matrix II

题目描述

给定一个正整数 n,生成一个 n × n 的螺旋矩阵 II。

输入

一个整数 n。

输出

一个 n × n 的二维数组,表示螺旋矩阵。

示例

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

解法一

解题思路:

我们可以使用四个指针来模拟螺旋矩阵的生成过程。从左上角开始,向右填充数字,然后向下,向右,向上,最后向左填充数字,直到所有位置都被填充。

/*
 * @lc app=leetcode.cn id=59 lang=javascript
 *
 * [59] Spiral Matrix II
 */

// @lc code=start
function generateMatrix(n) {
  let result = Array.from({ length: n }, () => new Array(n).fill(0));
  let value = 1;
  let left = 0, right = n - 1, top = 0, bottom = n - 1;
  while (value <= n * n) {
    for (let i = left; i <= right; i++) result[top][i] = value++;
    top++;
    for (let i = top; i <= bottom; i++) result[i][right] = value++;
    right--;
    if (top <= bottom) {
      for (let i = right; i >= left; i--) result[bottom][i] = value++;
      bottom--;
    }
    if (left <= right) {
      for (let i = bottom; i >= top; i--) result[i][left] = value++;
      left++;
    }
  }
  return result;
}
// @lc code=end
举报

相关推荐

0 条评论