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]);
                }
            }
        }
    };
  • 相关阅读:
    android 之 ListView相关
    android 之 菜单
    android 之 Dialog
    android 之 View
    android 之 service
    android 之 Intent、broadcast
    Service Broadcast简单音乐播放功能
    剑指offer面试题43:n个筛子的点数
    C# LINQ语法
    C# Linq
  • 原文地址:https://www.cnblogs.com/luo-c/p/12979976.html
Copyright © 2011-2022 走看看