Leetcode 48. Rotate Image

Rotate Image

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++

先對原數組取其轉置矩陣,然後把每行的數字翻轉得到結果,如下所示

image 41
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]));
  }
};