【模拟】顺时针旋转矩阵

求解代码

java 复制代码
public int[][] rotateMatrix(int[][] mat, int n) {
        // 空矩阵、空方阵直接返回
        if (mat == null || n == 0) {
            return mat;
        }

        // 矩阵转置(行和列互换)
        for (int i = 0; i < n; i++) {
            for (int j = i; j < n; j++) {
                int tmp = mat[i][j];
                mat[i][j] = mat[j][i];
                mat[j][i] = tmp;
            }
        }

        // 反转转置后矩阵的每一行,完成顺时针90度旋转
        for (int[] row : mat) {
            reverse(row);
        }

        return mat;
    }

    // 双指针法原地反转一维数组
    private void reverse(int[] arr) {
        int left = 0;
        int right = arr.length - 1;
        while (left < right) {
            // 交换左右指针元素
            int tmp = arr[left];
            arr[left] = arr[right];
            arr[right] = tmp;
            left++;
            right--;
        }
    }

小贴士

j0 开始会让对角线上下的元素对 被交换两次,交换两次就等于没交换,而ji开始能保证每个元素对只被交换一次。

相关推荐
电商API_1800790524723 分钟前
速卖通商品采集API技术文章
java·开发语言·c++·api·跨境电商·商品详情
郑州光合科技余经理27 分钟前
海外版外卖系统架构:订单怎么流转、权限怎么分
java·开发语言·前端·系统架构·uni-app·php·ai编程
一木 之林1 小时前
五、C++新特性、关键字与编译原理
java·jvm·算法
han_hanker1 小时前
新手公司项目实战
java·maven
vHelios1 小时前
【电商项目】商品搜索开发复盘(3):搜索与封装实现逻辑思考与编写
java
TKcloudmaster_H1 小时前
拆解TK跨境矩阵逻辑:不同区域该怎么规避违规风险
大数据·矩阵·新媒体运营·产品运营·流量运营
AI人工智能+电脑小能手2 小时前
大白话说Java设计模式-37-中介者模式(源码剖析篇)
java·设计模式·线程池·中介者模式·源码分析·executor·applicationeventmulticaster
焦虑的说说2 小时前
虚拟线程浅析
java
摇滚侠2 小时前
《SpringBoot 3:入门与应用实战》第 7 章 AOP 思想与实现 阅读笔记 13
java·spring boot·笔记