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;
                }
            }
        }
};
原文地址:https://www.cnblogs.com/superzrx/p/3320648.html