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停止

相关推荐
千寻xun4 小时前
一、理论篇-NVME协议学习笔记
笔记·学习·fpga开发·nvme ssd·nvme协议
researcher-Jiang4 小时前
高性能计算之OpenMP——超算习堂学习1
android·java·学习
CS创新实验室5 小时前
算法、齿轮与硅基大脑:数值计算发展简史
人工智能·算法·数值计算
海石6 小时前
1563分的简单题,可能就简单在能被暴力AC
算法·leetcode
海石7 小时前
1400分的dp汗流浃背之【交替子数组计数】
算法·leetcode
奋发向前wcx7 小时前
P2590 树的统计 题目解析
数据结构·算法·深度优先
imbackneverdie8 小时前
AI4S不止于分子药物:以MedPeer为代表的科研基建打开产业新增量
大数据·人工智能·算法·aigc·科研·学术·ai 4s
额鹅恶饿呃9 小时前
C语言中的数据结构和变量
c语言·数据结构·算法
MartinYeung59 小时前
[论文学习]大语言模型安全综述:攻击、防御、对齐、度量与护栏的深度解析
学习·安全·语言模型
AOwhisky10 小时前
Python 学习笔记(第三期)——流程控制:条件判断与循环结构
运维·笔记·python·学习·云原生·流程控制·循环