leetcode_48

Rotate Image

题目戳这

题意

给定一个矩阵,输出这个矩阵顺时针旋转90°的结果。

解法

这里给出顺时针和逆时针旋转90°的普遍解法。。

  1. 顺时针旋转90°

先把矩阵的行倒过来放,然后对角线交换即可。看个例子。。

1
2
3
1 2 3 7 8 9 7 4 1
4 5 6 ----> 4 5 6 ----> 8 5 2
7 8 9 1 2 3 9 6 3

2.逆时针旋转90°

先把矩阵的每一行倒置,然后对角线交换。

1
2
3
1 2 3 3 2 1 3 6 9
4 5 6 ----> 6 5 4 ----> 2 5 8
7 8 9 9 8 7 1 4 7

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution(object):
def rotate(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: void Do not return anything, modify matrix in-place instead.
"""
if not matrix:
return matrix
matrix.reverse()
n = len(matrix)
m = len(matrix[0])
for i in range(n):
for j in range(0,i):
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]