1 題目描述
給定一個 n × n 的二維矩陣表示一個圖像。
將圖像順時針旋轉 90 度。
說明:
你必須在原地旋轉圖像,這意味着你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉圖像。
2 解題思路
- 方法 1 :轉置加翻轉 **
最直接的想法是先轉置矩陣**,然後翻轉每一行。這個簡單的方法已經能達到最優的時間複雜度O(N^2)
3 解決代碼
- **方法 1 :轉置加翻轉 **《Java代碼》
class Solution {
public void rotate(int[][] matrix) {
int n = matrix.length;
// 第一步:進行矩陣轉置
for (int i = 0 ; i < n; i++){
for (int j = i; j < n; j++){
int tmp =matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = tmp;
}
}
//第二步:反轉每一行
for (int i = 0; i < n; i++){
//循環到一半就可以啦,因爲是對稱的
for(int j = 0; j < n/2; j++){
int tmp = matrix[i][j];
matrix[i][j] = matrix[i][n - j -1];
matrix[i][n - j - 1] = tmp;
}
}
}
}
- **方法 1 :轉置加翻轉 **《python3代碼》
class Solution:
def rotate(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
n = len(matrix[0])
for i in range(0, n):
for j in range(i, n):
matrix[j][i], matrix[i][j] = matrix[i][j], matrix[j][i]
for i in range(0,n):
matrix[i].reverse()
原文鏈接: https://leetcode-cn.com/problems/rotate-image/solution/xuan-zhuan-tu-xiang-by-leetcode/