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

48.Rotate Image

时间:2020-05-28 13:04:14      阅读:56      评论:0      收藏:0      [点我收藏+]

标签:ace   mes   循环   solution   一个   input   ima   NPU   nbsp   

给定一个二维方阵,求,将此方阵顺时针旋转90度。就地交换,不引入额外的存储消耗。

Given input matrix =
[
[ 5, 1, 9,11],
[ 2, 4, 8,10],
[13, 3, 6, 7],
[15,14,12,16]
],

rotate the input matrix in-place such that it becomes:
[
[15,13, 2, 5],
[14, 3, 4, 1],
[12, 6, 8, 9],
[16, 7,10,11]
]

思路:
对这些坐标进行研究,可以发现坐标是有规律的,从最外围往内进行交换,设方阵为 n * n ,每一次交换3对坐标,就可以将四条边上对应的坐标给交换完,然后循环。注意往内部循环的时候,走 n/2 即可全体交换完。

难点:
难点在于对坐标的研究,比如: a00, a03, a33, a30 这4个坐标的关系,以及 a01, a13, a32, a20 ,这四个需要交换的关系,进而推导出:aij与其另外3个坐标的关系

class Solution {
public:
    void rotate(vector<vector<int>>& matrix) {
        int n = matrix.size();
        for (int i = 0; i < n/2; i++) {
            for (int j = i; j < n-i-1; j++) {
                swap(matrix[i][j], matrix[j][n - 1 - i]);
                swap(matrix[i][j], matrix[n - 1 - i][n - 1 - j]);
                swap(matrix[i][j], matrix[n-1-j][i]);
            }
        }
    }
};

 

48.Rotate Image

标签:ace   mes   循环   solution   一个   input   ima   NPU   nbsp   

原文地址:https://www.cnblogs.com/luo-c/p/12979976.html

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