将二维数组旋转90度

来源:互联网 发布:centos7源码安装lamp 编辑:程序博客网 时间:2024/06/07 16:14

思路:

 按顺时针旋转分二步

1 先按副对角线交换

2 然后水平中线对称交换

代码:

    void rotate(vector<vector<int> > &matrix) {        int rows=matrix.size();        if(rows==0)            return;        for(int i=0;i<rows;i++){    //副对角线交换            for(int j=0;j<rows-i;j++){                swap(matrix[i][j],matrix[rows-1-j][rows-1-i]);            }        }        for(int i=0;i<rows/2;i++){   //水平中线            for(int j=0;j<rows;j++){                swap(matrix[i][j],matrix[rows-i-1][j]);            }        }    }

如果是逆时针,则先按主对角线交换。即 j<i ,a[i][j] 和 a[j]【i】交换。

原创粉丝点击