问题描述:
给定一个 n × n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。
说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。
示例 1:
给定 matrix = [[1,2,3], [4,5,6], [7,8,9]], 原地旋转输入矩阵,使其变为: [[7,4,1], [8,5,2], [9,6,3]]
问题分析:
(1)只能在原地矩阵上做操作,不能使用其他的矩阵,且图像确定,n*n的矩阵。
(2)很显然分两步,第一步,矩阵转置;第二步,矩阵逆序操作。这两个过程可以颠倒。
Python3实现:
# @Time :2018/6/7
# @Author :LiuYinxing
class Solution:
def rotate(self, matrix): # 方法1, 使用zip()
matrix[::] = zip(*matrix[::-1])
return matrix
def rotate1(self, matrix): # 方法2
matrix = matrix[::-1] # 逆序操作
for i in range(len(matrix)): # 转置
for j in range(i):
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
return matrix
if __name__ == '__main__':
solu = Solution()
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(solu.rotate(matrix))
Python zip()复习总结参考:https://blog.csdn.net/XX_123_1_RJ/article/details/80978676
欢迎指正哦。