欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

旋转图像

程序员文章站 2022-07-15 12:23:40
...

题目

分析

由于要进行原地旋转,直接交换matrix[row][col]和matrix[col][matrixSize-1-row]是行不通的(演算一下)。
由于顺时针旋转90度的结果是逆时针旋转90度结果在进行中心对换的结果,所以可以先对矩阵进行转置,再对每行reverse()就可得出结果。

代码

void swap(int * a,int * b){
    int tmp=*a;
    *a=*b;
    *b=tmp;
}
void rotate(int** matrix, int matrixSize, int* matrixColSize){
    //矩阵转置 
    for(int row=0;row<matrixSize;row++){
        for(int col=0;col<row;col++){
            swap(&matrix[row][col],&matrix[col][row]);
        }
    }
    //每行reverse
    for(int row=0;row<matrixSize;row++)
        for(int col=0;col<matrixSize/2;col++){
            swap(&matrix[row][col],&matrix[row][matrixSize-1-col]);
        }
}
相关标签: LeetCode刷题记录