旋转矩阵

给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。

示例 1:

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

原地旋转输入矩阵,使其变为:
[
  [7,4,1],
  [8,5,2],
  [9,6,3]
]

----------------------------------------------------------------------------------------------------------

按照算法的思路,可以先进行上下翻转,再沿着对角线进行替换,画一下就可以得出相应结果;

class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """
        L = len(matrix)
        #先将矩阵进行上下翻转
        matrix[:] = matrix[::-1]
        #接着沿着对角线进行替换
        for i in range(L):
            for j in range(i):
                matrix[j][i], matrix[i][j] = matrix[i][j], matrix[j][i]
        return matrix

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源介绍:认识矩阵, 譬如这是一个 2*3 (2 行 3 列) 的矩阵:┏    ┓ ┃3 1 4 ┃ ┃2 5 0 ┃ ┗    ┛   矩阵相加的例子:┏  ┓  ┏  ┓  ┏  ┓ ┃1 0┃  ┃2 4┃  ┃3 4┃ ┃0 2┃  ┃1 5┃ = ┃1 7┃ ┃1 3┃  ┃0 6┃  ┃1 9┃ ┗  ┛  ┗  ┛  ┗  ┛   在 GDI 中应用的矩阵运算是 "相乘".  矩阵相乘有个前提: 就是第一个矩阵的 "列数" 要和第二个矩阵的 "行数" 一致.  譬如: 矩阵 A*B 要乘以 矩阵 M*N, 要求 B = M.  GDI 中用到的 GP矩阵 是 3*3 的, 颜色矩阵(ColorMatrix) 是 5*5 的, 都符合这个条件.  矩阵 A*B 与 M*N 相乘后会得到一个 A*N 的新矩阵;   譬如一个 "2 行 3 列" 的矩阵与 "3 行 2 列" 的矩阵相乘, 会得到一个 "2 行 2 列" 的新矩阵.  从下面例子中可以看出相乘的方法:┏    ┓  ┏   ┓  ┏               ┓  ┏    ┓ ┃1 2 3 ┃  ┃7  8 ┃  ┃1*7 2*9 3*11  1*8 2*10 3*12┃  ┃58  64┃ ┃    ┃ * ┃9 10 ┃ = ┃               ┃ = ┃    ┃ ┃4 5 6 ┃  ┃11 12 ┃  ┃4*7 5*9 6*11  4*8 5*10 6*12┃  ┃130 154┃ ┗    ┛  ┗   ┛  ┗               ┛  ┗    ┛   因为 GDI 是二维的, GP矩阵 的第 3 列一直是 0, 0, 1, 但为了相乘运算也必须有这个位置.  它们看起来是下面的样子:┏      ┓  ┏      ┓ ┃1  0  0┃  ┃1  0  0┃ ┃0  1  0┃ or┃0  1  0┃ ┃2  3  1┃  ┃4  5  1┃ ┗      ┛  ┗      ┛   假如让上面两个矩阵相乘, 下面分别用 "手动运算" 与 "GDI 的函数运算" 对照下结果.  手动运算:┏      ┓  ┏      ┓  ┏                     ┓  ┏      ┓ ┃1  0  0┃  ┃1  0  0┃  ┃1*1 0*0 0*4  1*0 0*1 0*5  1*0 0*0 0*1┃  ┃1  0  0┃ ┃0  1  0┃ * ┃0  1  0┃ = ┃0*1 1*0 0*4  0*0 1*1 0*5  0*0 1*0 0*1┃ = ┃0  1  0┃ ┃2  3  1┃  ┃4  5  1┃  ┃2*1 3*0 1*4  2*0 3*1 1*5  2*0 3*0 1*1┃  ┃6  8  1┃ ┗      ┛  ┗      ┛  ┗                     ┛  ┗      ┛   一个 GP矩阵 的默认值(或者说单位矩阵)是:┏      ┓ ┃1  0  0┃ ┃0  1  0┃ ┃0  0  1┃ ┗      ┛ //对角线上是 1, 其他都是 0; 这个默认值可通过 矩阵.重置 方法获取.   根据各个位置的功能, GDI 给各位置命名如下(第三列没有意义也没有命名):┏        ┓ ┃M11  M12  0┃ ┃M21  M22  0┃ ┃DX   DY   1┃ ┗        ┛ 资源作者:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值