# -*- coding:utf-8 -*-
import sys
import copy
# 逆时针旋转90
# 空间复杂度O(n^2),矩阵行列数无约束
def ni_convert(a):
m = len(a[0])
b = [[j[m-1-i] for j in a] for i in range(m)]
return b
# 逆时针旋转90
# 前提是矩阵为N*N方阵
# 空间复杂度O(1)
# 先对角线交换,再行两端向中间互换
def ni_convert2(a): #主对角线翻转
n = len(a)
for i in range(n):
for j in range(0,i):
a[i][j],a[j][i] = a[j][i],a[i][j]
for i in range(n//2):
a[i],a[n-1-i] = a[n-1-i],a[i]
return a
# 顺时针旋转90
def shun_convert2(a):
n = len(a)
for i in range(n):
for j in range(0,n-1-i): #副对角线翻转
a[i][j],a[n-1-j][n-1-i] = a[n-1-j][n-1-i],a[i][j] #注意这里不同
for i in range(n//2):
a[i],a[n-1-i] = a[n-1-i],a[i]
return a
num = [[1,2,3],[4,5,6]]
print(ni_convert(num))
fangzhen = [[1,2,3],[4,5,6],[7,8,9]]
print(ni_convert2(fangzhen))
#注意传参数引用,数组会改变,所以逆时针后再顺时针刚好回到原数组
print(shun_convert2(fangzhen))