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

相关推荐
小雨下雨的雨5 小时前
井字棋AI机器人实现详解 - Minimax算法实战-鸿蒙PC Electron框架完成
前端·人工智能·算法·华为·electron·鸿蒙
xieliyu.8 小时前
Java算法精讲:双指针(三)
java·开发语言·算法
一条小锦吕*8 小时前
基于Spring Boot + 数据可视化 + 协同过滤算法的推荐系统设计与实现(源码+论文+部署全讲解)
spring boot·算法·信息可视化
数智工坊9 小时前
机器人运动控制:采样、优化与学习三大流派深度对比与实战
android·学习·机器人
ZC跨境爬虫9 小时前
跟着 MDN 学JavaScript day_7:数学运算与逻辑判断实战测试
开发语言·前端·javascript·学习·ecmascript
如竟没有火炬10 小时前
最大矩阵——单调栈
数据结构·python·线性代数·算法·leetcode·矩阵
8Qi810 小时前
LeetCode 1143 & 718:最长公共子序列 / 最长重复子数组
算法·leetcode·职场和发展·动态规划
绿算技术11 小时前
万卡推理集群存储选型分析:从核心架构到应用视角
大数据·科技·算法·架构
MartinYeung511 小时前
[论文学习]隐私保护联邦特徵选择与差分隐私的的工程实践框架
学习