Leetcode問題の解決策-インタビューの質問01.07。回転行列

トピックリンク

タイトル説明:

N×N行列で表される画像を提供します。各ピクセルのサイズは4バイトです。画像を90度回転させるアルゴリズムを設計してください。

追加のメモリスペースを使用せずに実行できますか?

例1:

行列=
[
[1,2,3]、
[4,5,6]、
[7,8,9]
]が与えられた場合
、入力行列を所定の位置に回転させて、
[
[7,4,1]、
[ 8,5,2]、
[9,6,3]
]

例2:

与えられた行列=
[
[5、1、9,11]、
[2、4、8,10]、
[13、3、6、7]、
[15,14,12,16]
]、
プレース行列に回転入力それになること

[ [15,13、2、5]、
[14、3、4、1]、
[12、6、8、9]、
[16、7,10,11]
]


その場での変更

  法則を見つけて、大学の線形代数の印象を少し加えます。

  1. 行列の転置(主対角線に沿って要素を上下に入れ替えます);
  2. 各線は、中心点によって左右に反転します。

コード

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


間違いや厳しくない場合は訂正してください、ありがとうございます。
私のブログ:http//breadhunter.gitee.io

おすすめ

転載: blog.csdn.net/weixin_40807714/article/details/105355494