JavaScript 将矩阵向右旋转K次
术语“对矩阵执行向右旋转”是指将矩阵中的每一列向右移动。当指定了操作次数为“k”时,将重复执行此操作。换句话说,这是矩阵向右移动“k”次。可以使用各种编程语言来实现此程序,但最简单有效的方法是使用JavaScript来将矩阵向右旋转k次。
如何将矩阵向右旋转K次
通过k次右旋转矩阵非常简单,它涉及将矩阵的每一列向右移动k次。为了演示这一点,让我们使用一个示例手动将矩阵向右旋转k次。
示例
让我们取一个大小为N*M的矩阵和一个数字K。我们需要将矩阵向右旋转k次。
Input matrix: N = 4, M = 4, K = 3
1 2 3 4
6 7 8 9
0 9 8 7
5 4 3 2
Output matrix:
4 1 2 3
9 6 7 8
7 0 9 8
2 5 4 3
方法
执行 k 次右旋转的过程可能很容易理解,但实现起来可能有些困难。这种方法涉及将第 i 行的每一列的元素复制到临时数组中,直到 m-k。然后,我们将从 k 到末尾的元素转移到第 i 行的开头。最后,我们将元素从临时数组复制回矩阵的每个第 i 行的末尾。
让我们看一下我们将使用的方法的算法。
将矩阵顺时针旋转 k 次的算法
步骤 1 − 确定矩阵的行数和列数。
步骤 2 − 根据 k 的值计算每行需要进行移位的次数。这可以使用取模运算符(%)来完成。
步骤 3 − 对于矩阵中的每一行,创建一个包含需要进行移位的元素的新数组。
步骤 4 − 使用 splice() 方法从原始行中删除移位的元素,并将它们添加到新行的开头。
步骤 5 − 将原始行设置为新行。
步骤 6 − 对矩阵中的每一行重复步骤 3-5。
示例
在这个程序中,我们定义了一个 MatrixRotation 类,它有两个静态方法:displayMatrix() 和 rotateMatrixRight()。
displayMatrix() 方法接受一个矩阵作为输入,并在控制台中显示它。它使用 for 循环遍历矩阵中的每一行,并将其记录到控制台中。
rotateMatrixRight() 方法接受一个矩阵和一个数字 k 作为输入,并返回一个经过 k 个位置顺时针旋转的新矩阵。它使用与上一个答案中相同的算法执行旋转。
在示例使用代码中,我们定义了一个输入矩阵和一个 k 的值,然后调用 rotateMatrixRight() 方法执行旋转。我们使用 displayMatrix() 方法同时显示输入矩阵和输出矩阵。
class MatrixRotation {
static displayMatrix(matrix) {
for (let i = 0; i < matrix.length; i++) {
console.log(matrix[i]);
}
}
static rotateMatrixRight(matrix, k) {
const numRows = matrix.length;
const numCols = matrix[0].length;
// Calculate the number of times each row needs to be shifted
const shifts = k % numCols;
// Rotate each row of the matrix
for (let i = 0; i < numRows; i++) {
const row = matrix[i];
// Create a new row that contains the shifted elements
const newRow = row.slice(numCols - shifts).concat(row.slice(0, numCols - shifts));
// Set the original row to the new row
matrix[i] = newRow;
}
return matrix;
}
}
// Example usage
const inputMatrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
const k = 2;
console.log("Input matrix:");
MatrixRotation.displayMatrix(inputMatrix);
const outputMatrix = MatrixRotation.rotateMatrixRight(inputMatrix, k);
console.log("Output matrix:");
MatrixRotation.displayMatrix(outputMatrix);
结论
使用几个简单的步骤,可以在JavaScript中将矩阵右旋k次。第一步是确定矩阵的行数和列数。接下来,根据变量k的值计算每一行需要右移的次数。确定了移动次数后,程序可以遍历矩阵的每一行,创建一个包含原始行右移元素的新数组,并更新原始行的元素。按照这些步骤,我们可以在JavaScript中将矩阵向右旋转k次。