*Leetcode —48.旋转图像《超详解》

191 阅读1分钟

本文已参与[新人创作礼]活动,一起开启掘金创作之路

48.旋转图像

leetcode-cn.com/problems/ro…

 核心是找到规律

  

1.假设 初始2 的坐标为(0,1)

   经过顺时针旋转后 2的坐标为(1,2)

2.第一行的第 2 个元素在旋转后恰好是倒数第一列的第 2个元素。

3.所以

对于矩阵中的第二行而言,在旋转后,它出现在倒数第二列的位置

对于矩阵中的第三行和第四行同理。

对于矩阵中第 i 行的第 j 个元素,在旋转后,它出现在倒数第 i 列的       第 j 个位置。

用代码表示matrix[j][matrixSize-1-i]=matrix[i][j];

void rotate(int** matrix, int matrixSize, int* matrixColSize){
int new[matrixSize][matrixSize];       //定义一个新的矩阵(数组)
for(int i=0;i<matrixSize;i++) 
{
    for(int j=0;j<matrixSize;j++)
    {
        new[j][matrixSize-1-i]=matrix[i][j];

    }
}
for(int m=0;m<matrixSize;m++)         //因为题目要求不能用另一个矩阵来表示
{                                      //所以令原矩阵等于新定义的矩阵
    for(int n=0;n<matrixSize;n++)
    {
    matrix[m][n]=new[m][n];
}
}
}