码迷,mamicode.com
首页 > 其他好文 > 详细

旋转矩阵

时间:2018-07-24 21:46:49      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:i++   for   vector   --   交换   cto   size   矩阵   amp   

思路:按照从外圈到内圈开始旋转。根据矩阵左上角和右下角确定一圈,然后交换矩阵中数字。

class Solution {
public:
    void rotate(vector<vector<int>>& matrix) {
        int tR=0,tC=0;//左上角坐标
        int dR=matrix.size()-1,dC=matrix[0].size()-1;//右下角坐标
        while(tR<dR){
            rotateEdge(matrix,tR++,tC++,dR--,dC--);
        }

    }
    void rotateEdge(vector<vector<int>>&matrix,int tR,int tC,int dR,int dC){
        int times=dR-tR;//每一圈需要旋转的组数
        int tmp=0;
        for(int i=0;i<times;i++){
            tmp=matrix[tR][tC+i];
            matrix[tR][tC+i]=matrix[dR-i][tC];
            matrix[dR-i][tC]=matrix[dR][dC-i];
            matrix[dR][dC-i]=matrix[tR+i][dC];
            matrix[tR+i][dC]=tmp;
        }
        
    }
};

 

旋转矩阵

标签:i++   for   vector   --   交换   cto   size   矩阵   amp   

原文地址:https://www.cnblogs.com/inception6-lxc/p/9362682.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!