首頁  >  文章  >  web前端  >  輕鬆就位旋轉矩陣:綜合指南

輕鬆就位旋轉矩陣:綜合指南

WBOY
WBOY原創
2024-07-24 17:47:291014瀏覽

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