其实主要就是两次翻转,把注意力放在矩形的四个角上,顺时针赚90度,其实可以转换成"/"对角线翻转一次,然后上下对称翻转一次,具体看代码
例如:

最初
[[1,2,3],
 [4,5,6],
 [7,8,9]]
 
首先"/"对角线翻转
[[9,6,3],
 [8,5,2],
 [7,4,1]]
 
然后上下对称翻转
[[7,4,1],
 [8,5,2],
 [9,6,3]]
 
 
class Solution {
public:
    vector<vector<int> > rotateMatrix(vector<vector<int> > mat, int n) {
        // write code here
        //"/"对角线翻转
        for(int i=0; i<n; ++i){
            for(int j=0; j+i<n; ++j){
                int temp = mat[i][j];
                mat[i][j] = mat[n-j-1][n-i-1];
                mat[n-j-1][n-i-1] = temp;
//                 swap(mat[i][j], mat[n-j-1][n-i-1]);
            }
        }
        //上下翻转
        for(int i=0; i<n/2; ++i){
            for(int j=0; j<n; ++j){
                int temp = mat[i][j];
                mat[i][j] = mat[n-i-1][j];
                mat[n-i-1][j] = temp;
//                 swap(mat[i][j], mat[n-i-1][j]);
            }
        }
        return mat;
    }
};
// {
//     [[1,2,3],
//      [4,5,6],
//      [7,8,9]]
    
//     [[9,6,3],
//      [8,5,2],
//      [7,4,1]]
    
//     [[7,4,1],
//      [8,5,2],
//      [9,6,3]]
// }