将矩阵向右旋转 K 次的 JavaScript 程序

术语“对矩阵进行右旋转”是指将矩阵中的每一列向右移动。如果指定,此操作将重复“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
方法< /p>
执行正确旋转 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 次。
javascript