BM99. 顺时针旋转矩阵
描述
有一个nxn整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。
示例1
输入:
[[1,2,3],[4,5,6],[7,8,9]],3
输出:
[[7,4,1],[8,5,2],[9,6,3]]
C++ 解法, 执行用时: 4ms, 内存消耗: 660KB, 提交时间: 2021-09-12
class Solution { public: vector<vector<int> > rotateMatrix(vector<vector<int> > mat, int n) { // write code here for(int i=0;i<n/2;i++) for(int j=0;j<n;j++) { swap(mat[i][j],mat[n-1-i][j]); } for(int i=0;i<n;i++) for(int j=0;j<i;j++) { swap(mat[i][j],mat[j][i]); } return mat; } };
C++ 解法, 执行用时: 4ms, 内存消耗: 664KB, 提交时间: 2021-09-20
class Solution { public: vector<vector<int> > rotateMatrix(vector<vector<int> > mat, int n) { // write code here if(n == 0) return mat; // 矩阵顺时针旋转 90° 等价于 先上下翻转 再沿对角线翻转 int rows = mat.size(); int cols = mat[0].size(); for(int i=0;i<rows/2;i++) { for(int j=0;j<cols;j++) { swap(mat[i][j],mat[rows-1-i][j]); } } for(int i=0;i<rows;i++) { for(int j=i+1;j<cols;j++) { swap(mat[i][j],mat[j][i]); } } return mat; } };
C++ 解法, 执行用时: 4ms, 内存消耗: 668KB, 提交时间: 2021-09-15
class Solution { public: vector<vector<int> > rotateMatrix(vector<vector<int> > mat, int n) { // write code here vector<vector<int> > mat_x(n,vector<int>(n,0)); for(int j = 0; j< n; j++){ for(int i = n-1; i >= 0;i--){ mat_x[j][n-i-1] = mat[i][j]; } } return mat_x; } };
C++ 解法, 执行用时: 4ms, 内存消耗: 668KB, 提交时间: 2021-09-08
class Solution { public: vector<vector<int> > rotateMatrix(vector<vector<int> > mat, int n) { vector<vector<int>> res(n, vector<int>(n,0)); for (int i = 0; i < n; i++) { // 逐行翻转 for (int j = 0; j < n; j++) { // 逐列处理元素 res[j][n-1-i] = mat[i][j]; } } return res; } };
C++ 解法, 执行用时: 4ms, 内存消耗: 668KB, 提交时间: 2021-09-07
class Solution { public: vector<vector<int> > rotateMatrix(vector<vector<int> > mat, int n) { // write code here int row = mat.size(), col = mat[0].size(); vector<vector<int>> ans(n, vector<int> (n)); for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) ans[i][j] = mat[n- j - 1][i]; return ans; } };