首页 > 其他分享 >矩阵旋转90度

矩阵旋转90度

时间:2023-02-19 22:34:27浏览次数:53  
标签:tmp matrix int 矩阵 len 旋转 column 90 row

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

矩阵旋转90度 由两个步骤组成:

1 矩阵转置

由“线性代数”知识可知:矩阵转置公式: matrix[i][j] = matrix[j][i]

2 交换列元素

假设一共有 len 列,第 column 列与第 len-column-1 列作交换。

class Solution {
    public void rotate(int[][] matrix) {
        //矩阵转置
        trans(matrix);
        //交换列
        swapColumn(matrix);
    }

    private void trans(int[][] matrix){
        int len = matrix.length;
        int tmp;
        for(int i = 0; i < len; i++){
            for(int j = i; j < len; j++){
                tmp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = tmp;
            }
        }
    }

    private void swapColumn(int[][] matrix){
        int len = matrix.length;
        int tmp;
        for(int column =0; column < len/2; column++){
            for(int row = 0; row < len; row++){
                tmp = matrix[row][column];
                matrix[row][column] = matrix[row][len-column-1];
                matrix[row][len-column-1] = tmp;
            }  
        }
    }
}

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

标签:tmp,matrix,int,矩阵,len,旋转,column,90,row
From: https://www.cnblogs.com/hapjin/p/17135813.html

相关文章

  • [数据结构] 稀疏矩阵的加法与乘法
    稀疏矩阵的加法传统矩阵的加法矩阵相加的前提是两个矩阵的行数和列数相等,将矩阵的每个元素对应相加即可。voidNormalAddMatrix(intA[][N],intB[][N],intC[][N]){......
  • [数据结构] 稀疏矩阵的转置与快速转置
    稀疏矩阵稀疏矩阵的定义在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵。假设在m*n的矩阵中,有t个非0元......
  • 周六1900C++班级-2023.2.19-字符串string
    字符串练习使用string定义一个字符串变量strings;字符串是单引号的(×)整行输入字符串有三种方式,分别是gets(),getline(cin,str),cin.getline(str,100)(√)gets是字符数......
  • 【LeeCode】剑指 Offer 58 - II. 左旋转字符串
    【题目描述】字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回......
  • 矩阵旋转
    旋转方法例子对于顺时针旋转90度先上线对称选择,在主对角线交换classSolution{public:voidrotate(vector<vector<int>>&matrix){intn=matrix.si......
  • 从矩阵的谱半径到神经网络梯度消失
    一、矩阵的范数 二、矩阵的谱半径虽然,谱半径小于等于任意矩阵范数。但是,也必存在一个算子范数,小于等于谱半径+一个小的正数 从线性方程组的迭代法的收敛性......
  • P5902 [IOI2009] salesman 题解
    题目链接题意船向上游移动1米花费\(U\)元,向下移动1米花费\(D\)元。沿河有\(N\)个展销会,对于第\(i\)个展销会,它的日期为\(T_i\),它的位置为\(L_i\),可获得盈......
  • Unity Android端操作-显示/影藏+旋转+放大缩小+截图的脚步代码
    显示/影藏//获取操作对象publicGameObjecttext;//初始旋转角度publicfloatxspeed=120;voidStart(){}//Update......
  • 周六900C++班级-2023.2.18-栈2
    栈练习2请写出使用stack头文件定义一个名称为q的整型栈_stack<int>q;_____设当前有栈q,元素x,请写出将元素x入栈push的程序q.push(x);设当前有栈q,元素x,请写出出栈pop的......
  • SpringBoot 官方文档示例(90):整合jpa时,自定义名称映射
    在SpringBoot整合jpa时默认将实体类的名称的驼峰映射成下划线的表名。也就是使用CamelCaseToUnderscoresNamingStrategy。可以通过自定义的方式来指定上述的映射规则,可以......