当前位置:首页 > JavaScript

蛇形数字宫格的实现js

2026-01-31 11:43:54JavaScript

蛇形数字宫格的实现(JavaScript)

蛇形数字宫格是一种按照特定顺序填充数字的矩阵,数字从外向内呈螺旋状排列。以下是实现方法:

初始化变量

需要定义矩阵的大小(n x n)并初始化一个二维数组:

function generateSnakeMatrix(n) {
  const matrix = Array(n).fill().map(() => Array(n).fill(0));
  let num = 1;
  let rowStart = 0, rowEnd = n - 1;
  let colStart = 0, colEnd = n - 1;
}

填充外圈数字

按照顺时针方向填充外圈数字:

while (rowStart <= rowEnd && colStart <= colEnd) {
  for (let i = colStart; i <= colEnd; i++) {
    matrix[rowStart][i] = num++;
  }
  rowStart++;

  for (let i = rowStart; i <= rowEnd; i++) {
    matrix[i][colEnd] = num++;
  }
  colEnd--;

  for (let i = colEnd; i >= colStart; i--) {
    matrix[rowEnd][i] = num++;
  }
  rowEnd--;

  for (let i = rowEnd; i >= rowStart; i--) {
    matrix[i][colStart] = num++;
  }
  colStart++;
}

完整代码示例

function generateSnakeMatrix(n) {
  const matrix = Array(n).fill().map(() => Array(n).fill(0));
  let num = 1;
  let rowStart = 0, rowEnd = n - 1;
  let colStart = 0, colEnd = n - 1;

  while (rowStart <= rowEnd && colStart <= colEnd) {
    for (let i = colStart; i <= colEnd; i++) {
      matrix[rowStart][i] = num++;
    }
    rowStart++;

    for (let i = rowStart; i <= rowEnd; i++) {
      matrix[i][colEnd] = num++;
    }
    colEnd--;

    for (let i = colEnd; i >= colStart; i--) {
      matrix[rowEnd][i] = num++;
    }
    rowEnd--;

    for (let i = rowEnd; i >= rowStart; i--) {
      matrix[i][colStart] = num++;
    }
    colStart++;
  }

  return matrix;
}

console.log(generateSnakeMatrix(4));

输出结果

对于4x4矩阵,输出如下:

蛇形数字宫格的实现js

[
  [1, 2, 3, 4],
  [12, 13, 14, 5],
  [11, 16, 15, 6],
  [10, 9, 8, 7]
]

算法复杂度

该算法的时间复杂度为O(n²),空间复杂度为O(n²),其中n是矩阵的维度。

标签: 蛇形数字
分享给朋友:

相关文章

vue实现数字跳动

vue实现数字跳动

Vue 实现数字跳动效果 数字跳动(数字滚动动画)是一种常见的交互效果,通常用于展示统计数据、计数器等场景。以下是几种实现方式: 方法一:使用 transition 和 v-for 通过遍历数字字符…

vue实现数字动态滚动

vue实现数字动态滚动

数字动态滚动实现方法 在Vue中实现数字动态滚动效果,可以通过以下方式完成: 使用transition组件结合CSS动画 通过Vue的transition组件和CSS的transition或anim…

react如何让input只能填数字

react如何让input只能填数字

限制输入为数字的方法 在React中限制<input>只能输入数字,可以通过以下几种方式实现: 1. 使用type="number"属性 <input type="number"…

js实现数字循环

js实现数字循环

实现数字循环的方法 使用模运算实现循环 模运算(%)是数字循环的常见方法,适用于固定范围的循环。例如,循环显示0到9的数字: let num = 0; setInterval(() => {…

php实现数字验证

php实现数字验证

使用正则表达式验证数字 正则表达式是验证数字的常用方法,可以匹配整数、浮点数或特定格式的数字。 验证整数: $number = "123"; if (preg_match('/^\d+$/…

PHP实现数字排列

PHP实现数字排列

数字排列的基本概念 数字排列指将一组数字按照特定顺序重新组合,常见于算法题或实际开发需求中。PHP提供了多种方式实现数字排列,包括递归、迭代以及内置函数组合。 使用递归实现全排列 递归是解决排列问题…