leetcode 48. 旋转图像

2023.10.5

本题最直观的思路就是再new一个二维数组,然后将原数组的第i行j列赋值给新数组的j行n-i-1列即可。 java代码如下:

方法一:使用额外空间:

java 复制代码
class Solution {
    public void rotate(int[][] matrix) {
        int n = matrix.length;
        int[][] new_matrix = new int[n][n];
        for(int i=0; i<n; i++){
            for(int j=0; j<n; j++){
                new_matrix[j][n-i-1] = matrix[i][j];
            }
        }
        for(int i=0; i<n; i++){
            for(int j=0; j<n; j++){
                matrix[i][j] = new_matrix[i][j];            
        }
    }
}
}

方法二:原地修改

还可以原地修改,先将数组进行转置,再将数组每一行进行反转即可。java代码如下:

java 复制代码
class Solution {
    public void rotate(int[][] matrix) {
        //先转置
        int n = matrix.length;
        for(int i=0; i<n; i++){
            for(int j=i; j<n; j++){
                int temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }
        }
        //再将每一行反转
        for(int i=0; i<n; i++){
            for(int j=0; j<n/2; j++){
                int temp = matrix[i][j];
                matrix[i][j] = matrix[i][n-j-1];
                matrix[i][n-j-1] = temp;
            }
        }
    }
}
相关推荐
灵魂猎手8 小时前
14. MyBatis XML 热更新实战:告别重启烦恼
java·mybatis
Keep learning!8 小时前
PCA主成分分析学习
学习·算法
程途知微8 小时前
AQS 同步器——Java 并发框架的核心底座全解析
java·后端
专注VB编程开发20年9 小时前
CUDA实现随机切割算法,显卡多线程计算
算法·cuda
sunwenjian8869 小时前
SpringBean的生命周期
java·开发语言
2301_788770559 小时前
OJ模拟4
算法
毕设源码-赖学姐9 小时前
【开题答辩全过程】以 基于Java的游泳馆会员管理系统的设计与实现为例,包含答辩的问题和答案
java·开发语言
侠客行03179 小时前
Tomcat 网络I/O模型浅析
java·tomcat·源码阅读
Yilena9 小时前
带你轻松学习LangChain4j
java·学习·langchain
皙然9 小时前
深入拆解MESI协议:从原理到实战,搞懂CPU缓存一致性的核心机制
java·缓存