zoukankan      html  css  js  c++  java
  • 48.Rotate Image

    给定一个二维方阵,求,将此方阵顺时针旋转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]);
                }
            }
        }
    };
  • 相关阅读:
    CentOS7 虚拟机搭建、初始设置、简单使用
    Oozie-4.0.0-cdh5.3.6搭建
    ionic开发环境搭建
    nodejs+chromium 创建桌面应用程序
    常用mysql笔记
    javascript 操作 css Rule
    javascript正则表达式笔记
    grunt之dev-pro环境切换
    grunt之入门实践
    动态加载js
  • 原文地址:https://www.cnblogs.com/luo-c/p/12979976.html
Copyright © 2011-2022 走看看