トピックリンク
タイトル説明:
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]
]
その場での変更
法則を見つけて、大学の線形代数の印象を少し加えます。。。
- 行列の転置(主対角線に沿って要素を上下に入れ替えます);
- 各線は、中心点によって左右に反転します。
コード
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