首页  >  文章  >  web前端  >  轻松就位旋转矩阵:综合指南

轻松就位旋转矩阵:综合指南

WBOY
WBOY原创
2024-07-24 17:47:291012浏览

Effortlessly Rotate a Matrix in Place: A Comprehensive Guide

将矩阵顺时针旋转 90 度是计算机科学和技术面试中的常见问题。这个问题可能特别有趣,因为目标是就地执行旋转,而不为新矩阵使用额外的内存。在本指南中,我们将通过清晰的解释和示例代码探索如何实现这一目标。


问题描述

给你一个代表图像的 n x n 2D 矩阵 A。您的任务是将图像顺时针旋转 90 度。如果您使用额外的阵列,您将仅获得部分积分。

问题约束

1≤n≤1000

输入格式

整数的二维矩阵 A

输出格式

二维旋转矩阵

输入示例

[
    [1, 2],
    [3, 4]
]

示例输出

[
    [3, 1],
    [4, 2]
]

示例说明

将矩阵旋转90度后:

  • 1 转到位置 2
  • 2 转到位置 4
  • 4 转到位置 3
  • 3 转到位置 1

分步解决方案

第 1 步:转置矩阵

  • 转置矩阵意味着将其行转换为列,将列转换为行。这可以通过交换主对角线(左上角到右下角)的元素来完成。

第 2 步:反转每一行

  • 矩阵转置后,下一步就是反转每一行。这将有效地将矩阵顺时针旋转 90 度。

示例代码

这是一个执行旋转的 JavaScript 函数:

function rotateMatrix(A) {
    const n = A.length;

    // Step 1: Transpose the matrix
    for (let i = 0; i < n; i++) {
        for (let j = i; j < n; j++) {
            let temp = A[i][j];
            A[i][j] = A[j][i];
            A[j][i] = temp;
        }
    }

    // Step 2: Reverse each row
    for (let i = 0; i < n; i++) {
        A[i].reverse();
    }

    return A;
}

// Example usage:
let matrix = [
    [1, 2],
    [3, 4]
];

console.log(rotateMatrix(matrix));

守则解释

转置矩阵:

  • 使用两个嵌套循环遍历矩阵。
  • 交换元素 A[i][j] 和 A[j][i] 以转置矩阵。

反转每一行:

  • 使用内置的reverse()方法反转转置矩阵中的每一行。

返回旋转矩阵:

  • 每行转置并反转后,矩阵顺时针旋转 90 度。

结论

就地旋转矩阵是一项宝贵的技能,可以展示您对数组操作和就地算法的理解。通过转置矩阵,然后反转每一行,您可以在不使用额外空间的情况下实现所需的旋转。练习这种方法可以增强您在技术面试和编码挑战中解决问题的能力。

以上是轻松就位旋转矩阵:综合指南的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn