面试题 01.07. 旋转矩阵

给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。

不占用额外内存空间能否做到?

利用抽象的原则。将大问题分解成小问题。

class Solution {
public:
    void rotate(vectorint>>& matrix) {
        int tr=0;
        int tc=0;
        int dr=matrix.size()-1;
        int dc=matrix.size()-1;
        while(tr<dc)
        {
            rotate_edge( matrix,tr++,tc++,dr--,dc--);
        }
    }

    void rotate_edge(vectorint>>& matrix,int tr,int tc,int dr,int dc)
    {
        for(int i=0;i)
        {
            int temp=matrix[tr][tc+i];
            matrix[tr][tc+i]=matrix[dr-i][tc];
            matrix[dr-i][tc]=matrix[dr][dc-i];
            matrix[dr][dc-i]=matrix[tr+i][dc];
            matrix[tr+i][dc]=temp;
        }
    }
};

 

你可能感兴趣的:(面试题 01.07. 旋转矩阵)