LeetCode算法学习之旋转矩阵

完整代码如下:

java 复制代码
class Solution {
    public void rotate(int[][] matrix) {
        //思路:先转置在进行行翻转

        //1 转置矩阵
        for(int i = 0;i<matrix.length;i++){
            for(int j = i;j<matrix[i].length;j++){
                int temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }
        }
        //2 行翻转
        for(int i = 0;i<matrix.length;i++){
            int left = 0;
            int right = matrix.length - 1;
            while(left < right){
                int temp = matrix[i][left];
                matrix[i][left] = matrix[i][right];
                matrix[i][right] = temp;
                left++;
                right--;
            }
        }

    }
}

本题实现思路:先转置矩阵,在进行行翻转

转置矩阵:将原来矩阵的行变为矩阵的列,顺序不发生改变,[1,2,3] [1,4,7]

4,5,6\] -----\> \[2,5,8

7,8,9\] \[3,6,9

行翻转:将矩阵每一行的最左最右的两个数的位置进行交换,直到左右两个数的位置重叠结束

1,4,7\] \[7,4,1

2,5,8\] -----\> \[8,5,2

3,6,9\] \[9,6,3\] 这样就达到了顺时针旋转90度矩阵的结果了 代码实现思路: 转置矩阵:通过交换i,j对应位置的元素,获得转置矩阵效果 行翻转:将每行的最左,最右两个元素交换位置,通过两个变量,left right来记录左右两个位置的值,每次交换之后,left++ ,right-- 直到right = left停止

相关推荐
阳光九叶草LXGZXJ24 分钟前
达梦数据库-学习-48-DmDrs控制台命令(同步之Manager、CPT模块)
linux·运维·数据库·sql·学习
biuyyyxxx1 小时前
Python自动化办公学习笔记(一) 工具安装&教程
笔记·python·学习·自动化
A_nanda2 小时前
c# MOdbus rto读写串口,如何不相互影响
算法·c#·多线程
丝斯20112 小时前
AI学习笔记整理(66)——多模态大模型MOE-LLAVA
人工智能·笔记·学习
军军君013 小时前
Three.js基础功能学习十三:太阳系实例上
前端·javascript·vue.js·学习·3d·前端框架·three
代码雕刻家4 小时前
2.4.蓝桥杯-分巧克力
算法·蓝桥杯
bylander4 小时前
【AI学习】TM Forum《Autonomous Networks Implementation Guide》快速理解
人工智能·学习·智能体·自动驾驶网络
xxxmine4 小时前
redis学习
数据库·redis·学习
Ulyanov4 小时前
顶层设计——单脉冲雷达仿真器的灵魂蓝图
python·算法·pyside·仿真系统·单脉冲
Yff_world5 小时前
网络通信模型
学习·网络安全