美文网首页
1、顺时针旋转矩阵

1、顺时针旋转矩阵

作者: i7990X | 来源:发表于2017-09-27 16:09 被阅读0次

顺时针旋转矩阵(牛客)
面试中被问到空间复杂度O(1)的方式,没写好,下标着实折腾。

1、空间复杂度O(n*n)

#-*-coding:utf-8-*-
#python2.7
class Rotate:
    def rotateMatrix(self, mat, n):
        # write code here,
        result=[]
        for i in range(n):
            temp=[]
            for j in range(n):
                temp.append(mat[n-j-1][i])
            result.append(temp)
        return result

2、空间复杂度O(1),从外向内每一层循环改变。

#-*-coding:utf-8-*-
#python2.7
class Rotate:
    def rotateMatrix(self, mat, n):
        # write code here,
        for layer in range(n/2):
            for i in range(layer,n-layer-1):
                reserve=mat[layer][i]
                mat[layer][i]=mat[n-i-1][layer]
                mat[n-i-1][layer]=mat[n-layer-1][n-i-1]
                mat[n-layer-1][n-i-1]=mat[i][n-layer-1]
                mat[i][n-layer-1] = reserve
        return mat

3、无需额外空间,需要使用异或特性原地交换。先转置再左右镜像交换。
不过由于python特性,无需swap函数,原地交换即可,参见Python为什么不需要swap(a, b)

#-*-coding:utf-8-*-
#python2.7
class Rotate:
    def rotateMatrix(self, mat, n):
        # write code here,
        for i in range(n):
            for j in range(i):
                mat[j][i],mat[i][j]=mat[i][j],mat[j][i]
        for i in range(n):
            for j in range(n/2):
                mat[i][n-j-1],mat[i][j]=mat[i][j],mat[i][n-j-1]
        return mat

相关文章

  • 矩阵本质-Transform函数详解

    矩阵 1.CGRectApplyAffineTransform函数 将对应的rect应用矩阵转换,此时的顺时针旋转...

  • 旋转正方形矩阵

    旋转正方形矩阵 【题目】 给定一个整型正方形矩阵matrix,请把该矩阵调整成顺时针旋转90度的样子。【要求】 额...

  • 1、顺时针旋转矩阵

    顺时针旋转矩阵(牛客)面试中被问到空间复杂度O(1)的方式,没写好,下标着实折腾。 1、空间复杂度O(n*n) 2...

  • 每日两道算法题 - 矩阵旋转

    问题 给定一个 n × n 的二维矩阵,按顺时针旋转 90 度在原矩阵上进行旋转。 思路 依次对矩阵最外层进行90...

  • 计算二维图形旋转后坐标

    二维图形旋转是计算机图形学中非常常用的一种操作,其中关键步骤就是坐标点的计算。 顺时针旋转 顺时针旋转矩阵为 逆时...

  • 顺时针旋转矩阵

    int* transform(intdata[],intw,inth) { staticintresult[9...

  • 顺时针旋转矩阵

    解题思路1)、先按照对角线进行选择1,2,34,5,67,8,9旋转后1,4,72,5,83,6,92)、本行内部...

  • 161. 旋转图像

    给定一个N×N的二维矩阵表示图像,90度顺时针旋转图像。 样例给出一个矩形[[1,2],[3,4]],90度顺时针...

  • 矩阵顺时针旋转90度

    n*n矩阵顺时针旋转90度 方法一:将二维数组顺时针旋转90度,就是将其转置后的数组的列进行前后交换(即第一列变为...

  • LeedCode 旋转图像

    LeetCode 旋转图像 给定一个 *n *× n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。 思路...

网友评论

      本文标题:1、顺时针旋转矩阵

      本文链接:https://www.haomeiwen.com/subject/vujuextx.html