leetcode48. 旋转图像 c++

记录矩阵变化前后各点的坐标变化,行坐标为row,列为col,矩阵为n维矩阵

可得点(row,col)=>(col,n-1-row);

即变化前的列坐标为变化后的行坐标,但得到这个规律之后,还是无从下手

这个时候考虑分步骤,先(row,col)=>(col,row)=>(col,n-1-row);

则先将矩阵以对角线为轴进行翻转,确定好变化后每个点的行坐标,然后再对列进行修正,即以每一行的中点为轴进行修正

class Solution {
public:
    void rotate(vector<vector<int>>& matrix) {

        //先沿对角线进行翻转,再每行以中间那列对称翻转,如下
        //1 2 3     1 4 7      7 4 1
        //4 5 6  => 2 5 8   => 8 5 2
        //7 8 9     3 7 9      9 7 3
        //沿对角线翻转
        for(int i=0;i<matrix.size()-1;++i){
            for(int j=i+1;j<matrix.size();++j){
                int temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }
        }
        //对列坐标进行修正
        for(int i=0;i<matrix.size();++i){
            for(int j=0;j<matrix.size()/2;++j){
                int temp = matrix[i][j];
                matrix[i][j] = matrix[i][matrix.size()-1-j];
                matrix[i][matrix.size()-1-j] = temp;
            }
        }
    }
};

参考:https://www.cnblogs.com/XDU-Lakers/p/14158735.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值