📅  最后修改于: 2023-12-03 14:53:55.576000             🧑  作者: Mango
给定一个n x n的矩阵matrix,将其除对角线以外的所有元素顺时针旋转90度。
输入:
matrix = [
[1,2,3],
[4,5,6],
[7,8,9]
]
输出:
[
[1, 4, 7],
[2, 5, 8],
[3, 6, 9]
]
题目中所提到的“除对角线以外”即指剩余的元素,可以分为两部分进行操作:
上半部分:将第i行倒数第i个元素与第j行第i个元素交换位置,其中j为列数减去i;
下半部分:将第i列第j个元素与第j行第i个元素交换位置,其中j为行数减去i。
def rotate(matrix):
n = len(matrix)
# 上半部分
for i in range(n):
for j in range(n-i):
matrix[i][j], matrix[n-j-1][n-i-1] = matrix[n-j-1][n-i-1], matrix[i][j]
# 下半部分
for i in range(n):
for j in range(n-i-1):
matrix[i][j], matrix[n-j-1][n-i-1] = matrix[n-j-1][n-i-1], matrix[i][j]
return matrix
本题目中让我们对矩阵中的元素进行90度旋转,我们可以将矩阵的除对角线以外的元素分为上半部分和下半部分进行处理。在上半部分中,我们将倒数第i个元素和第i行第j个元素进行交换,而在下半部分中,我们将第i列第j个元素和第i行第j个元素进行交换。通俗易懂的方法让本题变得十分简单易懂。