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

相关推荐
码农小韩1 小时前
基于Linux的C++学习——循环
linux·c语言·开发语言·c++·算法
CoderCodingNo1 小时前
【GESP】C++五级/四级练习(双指针/数学) luogu-P1147 连续自然数和
开发语言·c++·算法
IT=>小脑虎1 小时前
PHP零基础衔接进阶知识点【详解版】
开发语言·学习·php
大、男人1 小时前
mcp包的BaseSettings学习
学习
颜酱1 小时前
前端算法必备:双指针从入门到很熟练(快慢指针+相向指针+滑动窗口)
前端·后端·算法
好奇龙猫1 小时前
【人工智能学习-AI-MIT公开课第 20・21 概率推理】
人工智能·学习
Wect1 小时前
LeetCode 274. H 指数:两种高效解法全解析
算法·typescript
Q741_1471 小时前
海致星图招聘 数据库内核研发实习生 一轮笔试 总结复盘(2) 作答语言:C/C++ 哈夫曼编码 LRU
c语言·数据库·c++·算法·笔试·哈夫曼编码·哈夫曼树
stars-he1 小时前
FPGA学习笔记-图书馆存包柜,乒乓球游戏电路设计
笔记·学习·fpga开发
Hello.Reader2 小时前
PyFlink DataStream Operators 算子分类、函数写法、类型系统、链路优化(Chaining)与工程化踩坑
前端·python·算法