面试题 01.07. 旋转矩阵

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

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

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

class Solution {
public:
    void rotate(vector<vector<int>>& 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(vector<vector<int>>& matrix,int tr,int tc,int dr,int dc)
    {
        for(int i=0;i<dr-tr;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;
        }
    }
};

 

posted @ 2020-04-27 00:02  肉松松松松  阅读(126)  评论(0)    收藏  举报