力扣 题目48--旋转图像

题目


题解

虽然一开始走了弯路 但是竟然莫名其妙发现了规律

即斜反转然后轴反转

斜反转以右对角线 反转 轴反转以中线反转

代码

 1 #include<iostream>
 2 #include<vector>
 3 using namespace std;
 4 class Solution {
 5 public:
 6     void rotate(vector<vector<int>>& matrix) {
 7         //斜对称
 8         int len= matrix.size();
 9         for (int i = 0; i < matrix.size(); i++) {
10             for (int j = 0; j < len; j++) {
11                 int replace = matrix[i][j];
12                 matrix[i][j]=matrix[matrix.size()-1 - j][matrix.size()-1 - i];
13                 matrix[matrix.size() - 1 - j][matrix.size() - 1 - i]= replace;
14             }
15             len = len - 1;
16         }
17        //轴对称
18         for (int i = 0; i < matrix.size() / 2; i++) {
19             vector<int> replace = matrix[i];
20             matrix[i] = matrix[matrix.size() - 1 - i];
21             matrix[matrix.size() - 1 - i] = replace;
22         }
23     }
24 };
25 
26 int main() {
27     Solution  sol;
28     vector<vector<int>>matrix = { {1,2,3,4,5} ,{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25} };
29     for (int i = 0; i < matrix.size(); i++) {
30         for (int j = 0; j < matrix[0].size(); j++) {
31             cout << matrix[i][j] << " ";
32         }
33         cout << endl;
34     }
35     cout << endl;
36     sol.rotate(matrix);
37     for (int i = 0; i < matrix.size(); i++) {
38         for (int j = 0; j < matrix[0].size(); j++) {
39             cout << matrix[i][j] << " ";
40         }
41         cout << endl;
42     }
43 }
View Code

 

posted @ 2022-05-11 14:14  无聊的阿库娅  阅读(29)  评论(0)    收藏  举报