JavaScript 方阵元素螺旋

JavaScript 方阵元素螺旋

在这个问题陈述中,我们的主要目的是使用Javascript功能将方阵元素螺旋排列起来。有几种方法可以在Javascript中完成这个任务。

理解问题陈述

问题陈述是在Javascript中编写一个函数,将输出作为方阵元素的螺旋排列。例如,如果我们有一个二维矩阵为[1,2][3,4],如果我们将元素在顺时针方向螺旋排列,那么输出数组将是[1,2,4,3]。

给定问题的逻辑

对于代码,我们将实现一个函数来完成给定的工作。在这个函数内部,我们将传递一个参数矩阵,我们需要将其转换为顺时针螺旋顺序的数组。我们将通过维护四个变量来完成这个过程。这些变量将表示矩阵的边界,分别是行的开始、行的结束、列的开始和列的结束。在这个函数内部,我们将遍历矩阵的元素,并将元素推入结果数组中。

步骤

步骤1 − 声明一个名为spiralElements的函数,使用矩阵作为参数。

步骤2 − 定义所需的变量。一个结果数组,其中我们将存储结果数组。然后定义行和列的起始和结束点,并将它们命名为rowStart、rowEnd、colStart和colEnd。

步骤3 − 使用while循环循环并运行此循环,直到起始点小于结束点。

步骤4 − 在此循环中,我们将按顺序遍历这些元素,向右、向左、向上和向下。

步骤5 − 返回给定矩阵的螺旋数组的结果。

算法的代码

//function to spiraling the matrix elements
function spiralElements(matrix) {
   const result = [];
   let rowStart = 0;
   let rowEnd = matrix.length - 1;
   let colStart = 0;
   let colEnd = matrix[0].length - 1;

   while (rowStart <= rowEnd && colStart <= colEnd) {
      // Traverse right
      for (let i = colStart; i <= colEnd; i++) {
         result.push(matrix[rowStart][i]);
      }
      rowStart++;

      // Traverse down
      for (let i = rowStart; i <= rowEnd; i++) {
         result.push(matrix[i][colEnd]);
      }
      colEnd--;

      // Traverse left
      if (rowStart <= rowEnd) {
         for (let i = colEnd; i >= colStart; i--) {
            result.push(matrix[rowEnd][i]);
         }
         rowEnd--;
      }

      // Traverse up
      if (colStart <= colEnd) {
         for (let i = rowEnd; i >= rowStart; i--) {
            result.push(matrix[i][colStart]);
         }
         colStart++;
      }
   }
   return result;
}
const matrix = [ [7, 8, 9], [4, 5, 6], [1, 2, 3] ];
console.log(spiralElements(matrix));

在上面的输出中,我们可以看到给定方阵的螺旋元素。螺旋是顺时针方向的。如果我们从7(第一个元素)开始形成螺旋,然后遍历8、9,接着是6(第二行第三列)、3(第三行第三列)、2、1、4、5。

复杂度

函数的时间复杂度为O(n^2),其中n为给定方阵的一边的长度。这是因为我们正好遍历了矩阵中的每个元素。代码使用的空间复杂度也是O(n^2),因为它将结果存储为元素螺旋顺序的新数组。

结论

所以上述函数可以用于以顺时针方向螺旋矩阵的元素,时间复杂度为O(n^2)。我们主要使用了四个变量来跟踪矩阵的元素,以顺时针顺序进行螺旋。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程