1. 程式人生 > 其它 >力扣 題目48--旋轉影象

力扣 題目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