leetcoder 48. Rotate Image(思维)

题意:将一个矩阵进行顺时针旋转
自己的做法:直接推公式,x,y = y, n-1-x,弊端需要开一个标记数组

class Solution:
    def rotate(self, matrix):
        """
        Do not return anything, modify matrix in-place instead.
        """
        dt = {}
        l = []
        for i, x in enumerate(matrix):
            for j, y in enumerate(x):
                n = len(matrix[0])
                tmpx, tmpy = i, j
                ax, ay = j, n - 1 - i
                l.append(matrix[i][j])
                while((ax,ay) not in dt):
                    l.append(matrix[ax][ay])
                    matrix[ax][ay] = l[len(l)-2]
                    dt[(ax,ay)] = 1
                    tmpx, tmpy = ax, ay
                    ax, ay = tmpy, n - 1 - tmpx



        

大佬的做法:先做一个预处理(反转列表顺序),再直接推公式上半角x, y = y, x,优点不需要额外开空间。(但是不容易想到这个预处理)

class Solution:
    def rotate(self, matrix):
        """
        Do not return anything, modify matrix in-place instead.
        """
        matrix.reverse()
        l = len(matrix)
        for i in range(l):
            for j in range(i+1,l):
                matrix[i][j],matrix[j][i] = matrix[j][i], matrix[i][j]


©️2020 CSDN 皮肤主题: 程序猿惹谁了 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值