📌  相关文章
📜  将除对角线以外的所有 Matrix 元素顺时针旋转 90 度(1)

📅  最后修改于: 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]
]
方法分析

题目中所提到的“除对角线以外”即指剩余的元素,可以分为两部分进行操作:

  1. 上半部分:将第i行倒数第i个元素与第j行第i个元素交换位置,其中j为列数减去i;

  2. 下半部分:将第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个元素进行交换。通俗易懂的方法让本题变得十分简单易懂。