标签:png cout div css directly inpu 三角形 size cat
Rotate the image by 90 degrees (clockwise).
Note:
You have to rotate the image in-place, which means you have to modify the input 2D matrix directly. DO NOTallocate another 2D matrix and do the rotation.
Example 1:
Given input matrix = [ [1,2,3], [4,5,6], [7,8,9] ], rotate the input matrix in-place such that it becomes: [ [7,4,1], [8,5,2], [9,6,3] ]
Example 2:
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] ]
顺时针旋转90度时,可以把旋转90度所对应的三角形补充为等边三角形,按边旋转,如图
code
#include <iostream> #include <vector> #include <algorithm> using namespace std; class Solution { public: void rotate(vector<vector<int>>& matrix) { if(matrix.empty()) return ; tranpose(matrix); reflect(matrix); return ; } private: void tranpose(vector<vector<int>> &matrix) { for(int i=0;i<matrix.size();++i) { for(int j=0;j<i;++j) swap(matrix.at(i).at(j),matrix.at(j).at(i)); } return ; } void reflect(vector<vector<int>> &matrix) { for(int row=0;row<matrix.size();++row) { for(int i=0,j=matrix.at(row).size()-1;i<j;++i,--j) swap(matrix.at(row).at(i),matrix.at(row).at(j)); } return ; } }; int main() { vector<vector<int>> arr{{1,2,3},{4,5,6},{7,8,9}}; Solution s; s.rotate(arr); for(auto i:arr) { for(auto j:i) cout<<j<<" "; cout<<endl; } return 0; }
标签:png cout div css directly inpu 三角形 size cat
原文地址:https://www.cnblogs.com/tianzeng/p/10847086.html