LeetCode-Rotate Image

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

Rotate the image by 90 degrees (clockwise).

Follow up:
Could you do this in-place?

class Solution {
public:
    void rotate(vector<vector<int> > &matrix) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        int n=matrix.size();
        
            int half=n/2;
            for(int i=0;i<half;i++){
                for(int j=0;j<half;j++){
                    int temp;
                    temp=matrix[i][j];
                    matrix[i][j]=matrix[n-1-j][i];
                    matrix[n-1-j][i]= matrix[n-1-i][n-1-j];
                    matrix[n-1-i][n-1-j]=matrix[j][n-1-i];
                    matrix[j][n-1-i] =temp;
                }
            }
            if(n%2==1){
                int i=half;
                for(int j=0;j<half;j++){
                    int temp;
                   temp=matrix[i][j];
                    matrix[i][j]=matrix[n-1-j][i];
                    matrix[n-1-j][i]= matrix[n-1-i][n-1-j];
                    matrix[n-1-i][n-1-j]=matrix[j][n-1-i];
                    matrix[j][n-1-i] =temp;
                }
            }
        }
};

 

posted @ 2013-09-14 01:18  懒猫欣  阅读(119)  评论(0编辑  收藏  举报