题目描述:有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于300。
示例1
输入:[[1,2,3],[4,5,6],[7,8,9]],3
返回值:[[7,4,1],[8,5,2],[9,6,3]]
思路:要求顺时针旋转后的矩阵,设结果矩阵为RES,初始矩阵为mat,则根据图形旋转知识可知,mat顺时针旋转90度后为RES,那么RES逆时针旋转后则为mat,由此出发可求得 ,k看下图。
具体代码如下:
class Solution { public: vector<vector<int> > rotateMatrix(vector<vector<int> > mat, int n) {//围绕中心旋转 // write code here vector<vector<int> > RES; for(int i=0;i<n;i++) { vector<int> res; for(int j=0;j<n;j++) { res.push_back(0); } RES.push_back(res); } for(int i=0;i<n;i++) for(int j=0;j<n;j++) RES[i][j] = mat[n-1-j][i]; return RES; } };