📌  相关文章
📜  教资会网络 | UGC-NET CS 2017 年 12 月 2 日 |问题 35(1)

📅  最后修改于: 2023-12-03 15:39:56.480000             🧑  作者: Mango

UGC-NET CS 2017年12月2日 | 问题35

简介

UGC-NET CS是印度国家资格测试,意在评估申请人在计算机科学领域的教学能力或研究能力。问题35考察了申请人在编程方面的知识,具体内容会在下面展示。

问题描述

给定一个n x n的矩阵,编写一个程序来旋转该矩阵90度。在原地旋转该矩阵,这意味着你需要直接修改原矩阵。请注意,不要使用另一个矩阵来旋转该矩阵。

示例

输入:

matrix = [
  [1,2,3],
  [4,5,6],
  [7,8,9]
]

输出:

[
  [7,4,1],
  [8,5,2],
  [9,6,3]
]

解题思路

该问题的解决方法是将该矩阵转置并沿着中心垂直线翻转。我们首先交换矩阵的第i行和第j列,并交换第i列和第j行。随后,我们在每个元素上运用此方法。

代码实现
class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """
        n = len(matrix)
        for i in range(n):
            for j in range(i, n):
                matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
        
        for i in range(n):
            matrix[i].reverse()

以上是一个Python的解决方案,该函数有一个参数,这是表示输入矩阵的一个n x n的列表。函数本身不返回任何内容,而是就地修改传递给它的矩阵。