class Solution(object):
def rotate(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: None Do not return anything, modify matrix in-place instead.
"""
# 思路:控制起始点和边长
# while循环side > 0
# 根据起始点和边长先获得四个角的位置
# 内层循环for i in range(s)
# 通过i和四个角的关系获得这一次要交换的四个位置
# 更新起始点和边长
if len(matrix) <= 1:
return matrix
n = len(matrix)
s = n - 1
x, y = 0, 0
while s > 0:
l1 = [x, y]
l2 = [x, y + s]
l3 = [x + s, y + s]
l4 = [x + s, y]
for i in range(s):
t1 = matrix[l1[0]][l1[1] + i]
t2 = matrix[l2[0] + i][l2[1]]
t3 = matrix[l3[0]][l3[1] - i]
t4 = matrix[l4[0] - i][l4[1]]
matrix[l2[0] + i][l2[1]],matrix[l3[0]][l3[1] - i],matrix[l4[0] - i][l4[1]],matrix[l1[0]][l1[1] + i] = t1, t2, t3, t4
s -= 2
x += 1
y += 1
return matrix
s = Solution()
res = s.rotate([[1,2,3],[4,5,6],[7,8,9]])
print(res)
网友评论