Rotate Image

Q:You are given an n x n 2D matrix representing an image.

Rotate the image by 90 degrees (clockwise). 

顺时针90度旋转矩阵。in place

 

A:分两步走:1.沿着主对角线交换两侧的对称元素,2.交换第j列和第n-1-j列。

PS:如果是逆时针旋转,则1.沿着主对角线交换两侧的对称元素,2.交换第i行和第n-1-i行

    void rotate(vector<vector<int> > &matrix) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        int n = matrix.size();
        int i,j;
        int tmp;
        for(i=0;i<n;i++)
        {
           for(j=i+1;j<n;j++)
           {
               tmp = matrix[i][j];
               matrix[i][j] = matrix[j][i];
               matrix[j][i] = tmp;
           }
        }
        
        for(int j=0;j<n/2;j++)
        {
            for(int i=0;i<n;i++)
            {
                tmp = matrix[i][j];
                matrix[i][j] = matrix[i][n-1-j];
                matrix[i][n-1-j] = tmp;
            }
        }       
        
    }

  

posted @ 2013-09-15 22:53  summer_zhou  阅读(178)  评论(0编辑  收藏  举报