0
点赞
收藏
分享

微信扫一扫

LeetCode题解:48. 旋转图像

JakietYu 2022-04-30 阅读 34

文章目录

题目

1、题目描述

2、原题链接

48. 旋转图像

解题报告

1、解题思路

在这里插入图片描述
   ( 1 ) (1) (1) 顺时针旋转90°其实就是将整个数组沿着副对角线对称交换,再按行对称上下交换。

2、解题方法

   枚举

2、代码详解

//副对角相折后上下翻转 (对角线)i + j == n

void rotate(int** matrix, int matrixSize, int* matrixColSize){
    int i, j;
    int idx;
    for(i = 0; i < matrixSize; ++i){
        for(j = 0; j < matrixSize; ++j){
            if(i+j >= matrixSize - 1){
                break;
            }
            idx = matrixSize - i - j - 1;
            matrix[i][j] ^= matrix[i + idx][j + idx];
            matrix[i + idx][j + idx] ^= matrix[i][j];
            matrix[i][j] ^= matrix[i + idx][j + idx];
        }
    }
    int mid = (matrixSize + 1) / 2;
    int flag = matrixSize & 1;
    for(i = 0; i < matrixSize; ++i){
        if(i >= mid - flag ){
            break;
        }
        for(j = 0; j < matrixSize; ++j){
            matrix[i][j] ^= matrix[matrixSize-1-i][j];
            matrix[matrixSize-1-i][j] ^= matrix[i][j];
            matrix[i][j] ^= matrix[matrixSize-1-i][j];
        }
    }
}

总结

   逆时针旋转其实就是将这个矩阵顺时针旋转270°。

举报

相关推荐

0 条评论