給定一個 n x n 的二維矩陣,代表一張圖片。請將圖片「順時針旋轉 90 度」。旋轉需要在原地進行,也就是說,必須直接修改輸入的二維矩陣,不能分配另一個新的二維矩陣來完成旋轉操作。
範例 1:
範例 2:
限制條件:
要將矩陣進行順時針旋轉 90 度,我們可以通過以下兩個步驟完成:
1. 矩陣轉置:
2. 反轉每一行:
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
int n = matrix.size();
// 步驟1:矩陣轉置
for (int i = 0; i < n; ++i) {
for (int j = i + 1; j < n; ++j) {
swap(matrix[i][j], matrix[j][i]);
}
}
// 步驟2:反轉每一行
for (int i = 0; i < n; ++i) {
reverse(matrix[i].begin(), matrix[i].end());
}
}
};
1. 轉置矩陣:
2. 反轉每一行:
複雜度分析
1. 時間複雜度:
2. 空間複雜度:
這道題透過矩陣的轉置和反轉操作,可以在不分配額外空間的情況下完成矩陣順時針旋轉 90 度。這個解法不僅操作簡潔,而且符合題目要求的時間與空間限制。
以上是第二十九天的自學內容分享,謝謝大家。