【leetcode】#数组【Python】48. Rotate Image 旋转图像 zip

链接:

https://leetcode-cn.com/problems/rotate-image/

题目:

给定一个 n × n 的二维矩阵表示一个图像。

将图像顺时针旋转 90 度。

说明:

你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。

示例 1:

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

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

我的解法:很慢。。一圈为一个单位,

class Solution(object):
    def rotate(self, matrix):
        for i in range(len(matrix)/2):
            k = len(matrix) - i -1
            for j in range(k-i):
                num_0 = matrix[i+j][k]
                matrix[i+j][k] = matrix[i][i+j]
                num_1 = matrix[k][k-j]
                matrix[k][k-j] = num_0
                num_2 = matrix[k-j][i]
                matrix[k-j][i] = num_1
                matrix[i][i+j] = num_2 

别人的解法1: 先reverse一下,[[1 2 3],[4 5 6],[7 8 9]]的原矩阵变为[[7 8 9],[4 5 6],[1 2 3]]. 再沿着左上到右下的切线把矩阵对称翻转

class Solution(object):
    def rotate(self, matrix):
        matrix.reverse()
        print matrix
        n=len(matrix)
        for i in range(0,n):
            for j in range(i+1,n):
                matrix[i][j],matrix[j][i]=matrix[j][i],matrix[i][j]

别人的解法2: matrix[::-1]表示matrix.reverse()

class Solution(object):
    def rotate(self, matrix):
        matrix[::] = zip(*matrix[::-1])      

补充zip用法:

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped)          # 与 zip 相反,可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]
>>> zip(a,c)              # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值