JavaScript数组操作之旋转二维数组

一种实现方法是首先创建一个辅助数组,然后根据旋转规则将元素放置到新位置。这种方法的时间复杂度为 O(n^2),空间复杂度也为 O(n^2)。另一种方法是先沿对角线进行镜像对称,然后反转每一行。这种方法不需要额外的空间。具体实现如下:javascript var rotate = function (matrix) { let n = matrix...
JavaScript数组操作之旋转二维数组
给定一个 n x n 的二维矩阵 matrix 表示一个图像。请将图像顺时针旋转 90 度。你需要直接修改输入的二维矩阵,而不能使用另一个矩阵来旋转图像。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[[7,4,1],[8,5,2],[9,6,3]]。示例 2:输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]] 输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]。

一种实现方法是首先创建一个辅助数组,然后根据旋转规则将元素放置到新位置。这种方法的时间复杂度为 O(n^2),空间复杂度也为 O(n^2)。另一种方法是先沿对角线进行镜像对称,然后反转每一行。这种方法不需要额外的空间。具体实现如下:

javascript
var rotate = function (matrix) {
let n = matrix.length;
// 先沿对角线镜像对称二维矩阵
for (let i = 0; i < n; i++) {
for (let j = i; j < n; j++) {
[matrix[i][j], matrix[j][i]] = [matrix[j][i], matrix[i][j]];
}
}
// 然后反转二维矩阵的每一行
const reverseRow = (arr) => {
let i = 0, j = arr.length - 1;
while (i < j) {
[arr[i], arr[j]] = [arr[j], arr[i]];
i++;
j--;
}
};
for (let row of matrix) {
reverseRow(row);
}
return matrix;
}

此方法的时间复杂度同样是 O(n^2),但不需要额外的空间。

总结来说,旋转二维数组可以通过镜像对称和反转每一行的方式来实现,这种方法既高效又节省空间。希望这篇文章能够帮助你更好地理解如何在 JavaScript 中进行二维数组的旋转操作。2024-10-27
mengvlog 阅读 59 次 更新于 2025-12-16 08:46:10 我来答关注问题0
檬味博客在线解答立即免费咨询

CSS相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部