Rotate Image : 給定一個表示圖像的 n x n 二維矩陣。將圖像旋轉 90 度(順時針)
Python
先reverse(上下翻轉),把[[1 2 3],[4 5 6],[7 8 9]]的矩陣變為[[7 8 9],[4 5 6],[1 2 3]]. 再沿著左上到右下的對角線進行翻轉。
class Solution:
def rotate(self, matrix: List[List[int]]) -> None:
matrix.reverse() #上下翻轉
for i in range(len(matrix)):
for j in range(i):
#左上到右下的對角線翻轉
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
C++
先對原數組取其轉置矩陣,然後把每行的數字翻轉得到結果,如下所示
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
const int n = matrix.size();
for (int i = 0; i < n; ++i)
for (int j = i + 1; j < n; ++j)
swap(matrix[i][j], matrix[j][i]);
for (int i = 0; i < n; ++i)
reverse(begin(matrix[i]), end(matrix[i]));
}
};